社区
汇编语言
帖子详情
MOV BYTE PTR es:[di+BX],al什么意思?我不懂汇编,谢谢!
wisenowa
2002-01-07 02:06:29
...全文
1599
16
打赏
收藏
MOV BYTE PTR es:[di+BX],al什么意思?我不懂汇编,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wisenowa
2002-01-09
打赏
举报
回复
不行呀
wisenowa
2002-01-09
打赏
举报
回复
问题已解决
zara
2002-01-08
打赏
举报
回复
那试试将 BYTE PTR 去掉, 因为操作数 al 实际上已指定了
wisenowa
2002-01-08
打赏
举报
回复
我用DELPHI5.0编译的
zara
2002-01-07
打赏
举报
回复
可能是编译器的版本太低了的缘故 .
snowingedge
2002-01-07
打赏
举报
回复
就是一个基址变址(based indexed addressing)寻址方式呀,没有错呀
pmagic
2002-01-07
打赏
举报
回复
[BX+DI]
swallowzhou
2002-01-07
打赏
举报
回复
sorry.
DI+BX应该没有错。
les di,self //将self的地址偏移量送入di,基址送入es中。
所以MOV BYTE PTR es:[di+BX],al中必须指明es和di,bx也可以用。这个寄存器组合应该没有问题。
wisenowa
2002-01-07
打赏
举报
回复
我对汇编一点都不懂
还望您能指点
谢谢
swallowzhou
2002-01-07
打赏
举报
回复
我也很久没用汇编了,可能是当ES作基址寄存器时,不能用BX或DI,你将它们分别用另一个寄存器来代替,看行不行。
现在手边也没有汇编的书。不好意思。
wisenowa
2002-01-07
打赏
举报
回复
错误提示:无效的寄存器组合
wisenowa
2002-01-07
打赏
举报
回复
为什么MOV BYTE PTR es:[di+BX],al有错呢?
谢谢
还有50分
swallowzhou
2002-01-07
打赏
举报
回复
BYTE就是指字节啊。
BX在你的程序中初始化为0,然后循环递增,一直到40H.
wisenowa
2002-01-07
打赏
举报
回复
BYTE 设么意思?
BX 一般为多少?
以下是出错代码
les di,self
add di,CMOSRec//CMOSRec是结构,已定义
MOV CX,40H
MOV AH,0H
MOV BX,0
@1:
MOV DX,70H
MOV AL,AH
OUT DX,AL
INC DX
in AL,dx
MOV BYTE PTR es:[di+BX],al
INC AH
INC BX
DEC CX
JNZ @1
谢谢
swallowzhou
2002-01-07
打赏
举报
回复
将al中的数据送入以es为基址,di+bx为偏移量所指的地址中去,以字节为单位。
wisenowa
2002-01-07
打赏
举报
回复
各位
拜托了
用
汇编
做的钟(时间与系统的同步)
时间与系统的同步 代码如下: assume cs:code data segment db 20 dup(0) data ends qw segment db'Pr
es
s "Q" to quit',0 qw ends code segment start:
mov
bx
,0b800h
mov
es
,
bx
mov
ax,qw
mov
ds,ax
mov
ch,0
mov
di
,0
mov
si,0 sh:
mov
cl,ds:[si] jcxz redo
mov
es
:[160*10+30*2+
di
],cl inc si inc
di
inc
di
jmp sh redo:
mov
bx
,data
mov
ds,
bx
mov
si,0
mov
di
,0
mov
cx,10
mov
bl,0 s:
mov
al
,bl out 70h,
al
in
al
,71h
mov
ah,
al
shr ah,1 shr ah,1 shr ah,1 shr ah,1 and
al
,00001111b add
al
,30h add ah,30h
mov
ds:[si],
al
mov
ds:[1+si],ah add si,2 inc bl loop s
mov
si,0
mov
di
,22
mov
al
,ds:[si] ;显示秒
mov
ah,ds:[si+1]
mov
byte
ptr
es
:[160*12+34*2-
di
],':'
mov
es
:[160*12+35*2-
di
],ah
mov
es
:[160*12+36*2-
di
],
al
sub
di
,6 ;显示分 add si,4
mov
al
,ds:[si]
mov
ah,ds:[si+1]
mov
byte
ptr
es
:[160*12+34*2+
di
],':'
mov
es
:[160*12+35*2+
di
],ah
mov
es
:[160*12+36*2+
di
],
al
sub
di
,6 ;显示时 add si,4
mov
al
,ds:[si]
mov
ah,ds:[si+1]
mov
es
:[160*12+35*2+
di
],ah
mov
es
:[160*12+36*2+
di
],
al
sub
di
,8 add si,6
mov
al
,ds:[si]
mov
ah,ds:[si+1]
mov
byte
ptr
es
:[160*12+34*2+
di
],'/'
mov
es
:[160*12+35*2+
di
],ah
mov
es
:[160*12+36*2+
di
],
al
sub
di
,6 add si,2
mov
al
,ds:[si]
mov
ah,ds:[si+1]
mov
byte
ptr
es
:[160*12+34*2+
di
],'/'
mov
es
:[160*12+35*2+
di
],ah
mov
es
:[160*12+36*2+
di
],
al
sub
di
,6 add si,2
mov
al
,ds:[si]
mov
ah,ds:[si+1]
mov
es
:[160*12+35*2+
di
],ah
mov
es
:[160*12+36*2+
di
],
al
in
al
,60h cmp
al
,10h je ok jmp redo ok:
mov
ax,4c00h int 21h code ends end start
汇编
指令及说明举例
适合新手学
汇编
指令及说明 差不多全在这里了
汇编
语言程序设计期中考试题.pdf
汇编
语言程序设计期中考试题.pdf
汇编
语言试卷
汇编
程序设计语言期末考试试卷A,嵌入式方向,
汇编
、C等语言的指令字典
数据传送指令
MOV
指令格式:
MOV
OPRD1,OPRD2 OPRD1 为目的操作数,可以是寄存器、存储器、累加器。 OPRD2 为源操作数,可以是寄存器、存储器、累加器和立即数。 功能:本指令将一个源操作数送到目的操作数中,即OPRD1<--OPRD2。 说明:本指令不影响状态标志位.
MOV
指令以分为以下四种情况: <1>寄存器与寄存器之间的数据传送指令 例:
MOV
AX,
BX
MOV
DS,AX
MOV
BP,SI 注意:代码段寄存器CS及指令指针IP不参加数的传送,其中CS可以作为源操作数参加传送,但不能作为目的操作数参加传送。 <2>立即数到通用寄存器数据传送指令 立即数只能作源操作数使用,不能作目的操作数。 例:
MOV
AL
,25
MOV
SI,OFFSET DATA1 注意:由于传送的数据可能是字节,也可能是字,源操作数与目的操作数的类型应一致。 <3>寄存器与存储器之间的数据传送指令 例:
MOV
AL
,BUFFER
MOV
AX,[SI]
MOV
LAST[
BX
+
DI
],DL
MOV
SI,
ES
:[BP] <4>立即数到存储器的数据传送 例:
MOV
AL
FA,24
MOV
DS:MEMS[BP],300AH
MOV
BYTE
PTR
[SI],15
MOV
LAST[
BX
][DX],0FFH
汇编语言
21,496
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章