实现两个数的加减乘除运算:
无符号数情况
加法:
运行截图:
AX初始化结束后低八位为:1EH = 30
ADD指令结束后,num2加入到了AL中,1EH+0FH = 2DH = 45,说明结果符合预期
减法
运行截图:
AX寄存器 中 AL初始化后为1EH = 30D
SUB指令结束后,AL为0FH = 15,结果正确
乘法:
运行截图:
AX与AX异或,将AX置零,便于后续观察AX中的内容
将30D= 1EH送入Al中
执行MUL指令,AL扩展为AX,AX中结果为01C2H = 450D
除法
运行截图:
将30D = 1EH送入AL中 并且将AL利用CBW指令扩展为16位的AX
执行完DIV指令之后,AX只剩下了02H,符合结果
有符号数情况:
进行带符号运算时,负数进行的是补码的运算,需要写出负数的补码。
加法:
运行截图:
将 10送入AX寄存器,10为整数,所以三码合一,AX中存放了000AH
将-25的补码11100111加入到AX,得到结果11110001 转换为源码为:10001111,即-15
减法:
运行截图:
将10送入AX中
执行SUB指令,得到-35的补码
乘法:
运行截图:
将10送入AX中
执行完IMUL指令后,得到-350的补码,并存放在AX中
除法
运行截图:
将10送入AX中
IDIV执行后: 10/(-25) 商为0,存放在AX中,余数为10,存放在DX中
交换指令:
XCHG指令实现:
XOR指令实现:
运行截图:
存入数据之后,先是AX与BX异或,将值存入AX中,AX各位取反
之后将AX与BX值异或,值存入BX中,BX各位取反
最后AX 与 BX 异或,得到预期结果