汇编问题7.9
code segmentstart:mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
mov bx,0 ;定义行
mov cx,4
s:push cx
mov si,0 ;定义列
mov cx,4
s0: mov al,
and al,11011111b
mov ,al
inc si
loop s0
add bx,16
pop cx
loop s
mov ax,4c00h
int 21h
code ends
end start
这段程序中,里面这个这样写在编译的时候出错了,改成或者3就不会出错,各位有出现这个问题吗
应该不是你说的这个问题
你要注意 si 和 di 是不能够分成两个8位寄存器的,也就是说它们所传递对应的应该是al,ah,bl,bh这样的8位寄存器,就算是配合bx进行灵活寻址,也需要对应16位以上的寄存器,反之应该是ax,bx这样的16位寄存器!所以你仔细看一下 王爽汇编 179页 对于 si和di的讲解! 语法错误不能这么写 书本上介绍说这样写也是可以的,但是编译错误,难道是书本写错了?
梦想与现实,我想你说错了,所谓的si,di不能拆成两个8位寄存器,是说他不能像ax,bx那样能拆成al,ah,bl,bh。。所以不能够这样写:mov al,;应该要这样写才对:mov ax,。。
就算是配合bx进行灵活寻址,对应多少位的寄存器,应该传递的就是多少位的数据,如mov ax,就是16位数据,mov al 就是8为数据。
这是我的理解,希望大伙能讨论讨论:lol 学习学习 学习学习
页:
[1]