实现十六进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显出来.
用汇编语言编写程序
我知道你的问题了:你每次执行 -g 0106,而IP也在106,其实没有再执行。。。呵呵,按我以下的方式试试。。。
没有问题呀。。。。
AX=2C00 BX=0000 CX=0F09 DX=1662 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AFD ES=0AFD SS=0AFD CS=0AFD IP=0104 NV UP EI PL ZR NA PE NC
0AFD:0104 CD21 INT 21
-p
AX=2C00 BX=0000 CX=0F09 DX=2603 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AFD ES=0AFD SS=0AFD CS=0AFD IP=0106 NV UP EI PL ZR NA PE NC
0AFD:0106 EBF8 JMP 0100
-g104
AX=2C00 BX=0000 CX=0F09 DX=2603 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AFD ES=0AFD SS=0AFD CS=0AFD IP=0104 NV UP EI PL ZR NA PE NC
0AFD:0104 CD21 INT 21
-p
AX=2C00 BX=0000 CX=0F0A DX=1300 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AFD ES=0AFD SS=0AFD CS=0AFD IP=0106 NV UP EI PL ZR NA PE NC
0AFD:0106 EBF8 JMP 0100
-
以EAX,EBX,等显示的都是二进制的数吧.
我用的是比较简单的汇编:
title 两个数相乘
;this program will mul two numbers and put the result into EAX
include irvine32.inc
.code
main proc
mov eax,0;
mov ebx,0;
mov ebx,32h;
mov eax,54h;
mul ebx;CF=0 EDX此时为0,进位标志被设置
call writeint
call dumpregs;
exit
main endp
end main
下一篇:visio适应绘图会导致内容变动
上一篇:排水系统通信模块如何设计