实现两个数的加减乘除运算:

无符号数情况

加法:

运行截图:
image.png

image.png
AX初始化结束后低八位为:1EH = 30
image.png
ADD指令结束后,num2加入到了AL中,1EH+0FH = 2DH = 45,说明结果符合预期

减法

运行截图:
image.png

image.png
AX寄存器 中 AL初始化后为1EH = 30D
SUB指令结束后,AL为0FH = 15,结果正确

乘法:

运行截图:
image.png

AX与AX异或,将AX置零,便于后续观察AX中的内容
image.png
将30D= 1EH送入Al中
image.png
执行MUL指令,AL扩展为AX,AX中结果为01C2H = 450D
image.png

除法

运行截图:
image.png
将30D = 1EH送入AL中 并且将AL利用CBW指令扩展为16位的AX
image.png
执行完DIV指令之后,AX只剩下了02H,符合结果
image.png

有符号数情况:

进行带符号运算时,负数进行的是补码的运算,需要写出负数的补码。

加法:

运行截图:
image.png
将 10送入AX寄存器,10为整数,所以三码合一,AX中存放了000AH
image.png
将-25的补码11100111加入到AX,得到结果11110001 转换为源码为:10001111,即-15
image.png

减法:

运行截图:
image.png
将10送入AX中
image.png
执行SUB指令,得到-35的补码
image.png

乘法:

运行截图:
image.png
将10送入AX中
image.png
执行完IMUL指令后,得到-350的补码,并存放在AX中
image.png

除法

运行截图:
image.png
将10送入AX中
image.png
IDIV执行后: 10/(-25) 商为0,存放在AX中,余数为10,存放在DX中
image.png

交换指令:

XCHG指令实现:

运行截图:
image.png
XCHG可以一步实现两个寄存器内容的交换
image.png

XOR指令实现:

运行截图:
image.png
存入数据之后,先是AX与BX异或,将值存入AX中,AX各位取反
之后将AX与BX值异或,值存入BX中,BX各位取反
最后AX 与 BX 异或,得到预期结果
image.png