最近在学习 16位汇编编程,所以顺便将每日所学记录下来,一方面为了巩固学习的知识,另一方面也为同样在学习汇编开发的童鞋们提供一份参考。
运行环境:
- 操作系统: Windows 10家庭版
- 编译器:Windows XP Debug
位操作指令
符号扩展
符号扩展是指用一个操作数的符号位(即最高位)形成另一个操作数,后一个操作数的各位都是全0(正数)或全1(负数)。符号扩展不改变数据大小
- 对于数据64H(表示数据100),起最高位D7为0,符号扩展后高八位都是0,成为0064H
- 对于数据FF00H(表示有符号数-256),其最高位D15为1,符号扩展后高16位都是1,成为FFFFFF0H(仍表示有符号数-256)
CBW(BYTE-WORD)
1 | CBW |
CWD(WORD-DWORD)
1 | CWD |
demo:
1 | mov al,80h ;al=80h |
十进制调整指令
十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果分成压缩BCD码和非压缩BCD码调整
压缩BCD码
压缩BCD码就是通常的8421码;它用4个二进制位表示一个十进制位,一个字节可以表示两个十进制位,即00~99
非压缩BDC码
非压缩BCD码用8个二进制位表示一个十进制位,只用低4个二进制位表示一个十进制位0~9,高4位任意,通常默认为0
BCD码
二进制编码的十进制数:一位十进制数用4位二进制编码来表示 8086支持压缩BCD码和非压缩BCD码的调整运算
真值 | 8 | 64 |
---|---|---|
二进制编码 | 08H | 40H |
压缩BCD码 | 08H | 64H |
非压缩BCD码 | 08H | 0604H |
压缩BCD码加、减调整指令
1 | (ADD AL,i8/r8/m8) |
使用DAA或DAS指令前,应先执行以AL为目的操作数的加法或减法指令
DAS实现十进制调整
1 | mov al,68h |