跳转至

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]