ax bx cx dx 是通用寄存器. 长度是16位.
ax 可以拆成低位的al和高位的ah两个寄存器.
cs: code segment
ip: i point
cs:ip指向要执行的命令
ss : stack segment
sp: stack point
ss:sp 指向栈顶(地址高位还是低位?)
ds: data segment
[0]表示内存单元, 偏移地址是0, 段地址在ds寄存器中.
mov ax,[bx] 表示将偏移地址为bx寄存器的值的内存内容送到ax, 段地址还是在ds中.
loop语句
assume cs:code
code segment
mov ax,2
mov cx,11
s: add ax,ax
loop s
mov ax,4c00h
int 21h
code ends
end
执行一次loop s, cx先减一, 如果cx不为0, 则执行循环体, 否则loop结束.
注意, s标记的语句先执行一次, 然后才是循环执行.
汇编程序中, 数据不能以字母开头,比如 mov ax,0ffffh
代码在debug.exe和masm.exe中的不同¶
masm汇编器会将代码文件中的mov al,[0]代码转成 max al, 00. 在代码文件中,如果需要实现, 需要这样写:
mov al,ds:[0] 或者 mov al,[bx]等同于mov al,ds:[bx]