伪指令
db指令:伪指令,用于定义操作数所占用的字节数。b 就是byte,也就是说每一个操作数占用一个字节,在程序编译到时候,会将 db 后面定义的数据将被视作纯数据而不是指令代码。
ledcode db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;定义 ledcode 数组
dw指令:伪指令,其基本含义与上面的 db 指令是相同的,不同在于 dw 是用来定义16位数据,也就是说每个数据是需要用两个单元存放。高8位数据字节存入高地址字节中,而低8位数据字节则存入低地址字节中。
buf dw ?
dd指令:伪指令,与上面的指令是基本功能是相同的,该指令是用来定义4个字节数据的。
指令
cmp指令:用于比较整数,相当于减法指令,只是不保存结果,但是会修改标志寄存器的某一位,也就是说会按照计算结果修改溢出、符号、零、进位、辅助进位和奇偶标志位。程序在条件跳转指令中使用 CMP 指令的时候,汇编语言的执行结果就和其他语言的 if 语句一样。
mov ax,200h
mov bx,201h
cmp ax,bx
上述执行过程会使得 (ax)=200,(bx)=201h,
各标志位初始状态:ZF=0,PF=1,SF=0,CF=0,OF=0,(ZF:零标志,PF:奇偶标志,SF:符号标志,CF:进位标志,OF:溢出标志)
ax、bx情况 | 标志位 |
ax == bx | ZF = 1 |
ax != bx | ZF = 0 |
ax < bx | SF = 1 |
ax >= bx | SF = 0 |
ax > bx | SF = 0 并且 ZF = 0 |
ax <= bx | SF = 1 并且 ZF = 1 |
inc指令:算术运算类指令,起到加1的功能,并将结果返回给操作数
mov bx 200h
inc bx ;inc 算术运算类指令,起到加1的功能
sal、sar、shl、shr指令
指令 | 解释 | ||
算数指令 | sal指令 | 算数左移指令, 在执行的时候会将操作数看成带符号数进行移位的 | |
sar指令 | 算数右移指令, 在执行的时候会将操作数看成带符号数进行移位的 | ||
逻辑指令 | shl指令 | 算数左移指令, 在执行的时候会将操作数看成带符号数进行移位的 | |
shr指令 | 算数右移指令, 在执行的时候会将操作数看成带符号数进行移位的 |