Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 装配作业_Assembly_X86 16_Tasm - Fatal编程技术网

Assembly 装配作业

Assembly 装配作业,assembly,x86-16,tasm,Assembly,X86 16,Tasm,程序是家庭作业的一部分,问题是-程序卡住(冻结) 通过使用Turbo调试器我知道程序可以工作,并返回正确值(0)。但是,不知道为什么,输出没有显示在屏幕上,程序卡住了 节目 因为您将帮助定义为一个单词(HELP DW 0),所以指令DIV HELP将帮助除以DX:AX。因此,您需要将DX设置为零: xor dx, dx DIV HELP xor dx, dx <-- You need to change the code (remainder is in DX) DIV TEN

程序是家庭作业的一部分,问题是-程序卡住(冻结)

通过使用
Turbo调试器
我知道程序可以工作,并返回
正确值(0)
。但是,不知道为什么,输出没有显示在屏幕上,程序卡住了

节目
因为您将帮助定义为一个单词(
HELP DW 0
),所以指令
DIV HELP
将帮助除以
DX:AX
。因此,您需要将DX设置为零:

xor dx, dx
DIV HELP
xor dx, dx     <-- You need to change the code (remainder is in DX)
DIV TEN


因为您将十定义为一个单词(
TEN DW 10
),指令
DIV TEN
DX:AX
除以十。因此,您需要将DX设置为零:

xor dx, dx
DIV HELP
xor dx, dx     <-- You need to change the code (remainder is in DX)
DIV TEN

xor-dx,dx当你在调试器中运行时,它在哪里卡住了?另外,特别是如果你想让别人帮忙,请注释你的代码。此外,请仔细检查操作数的大小,因为它们到处都是。更不用说,每次你把两只猫分开,一只小猫就死了。事实并非如此。它在TurboDebugger.hh tnx中运行良好。这是我第一次来这里,只是第一次学习ASM。。二乘二的DIV或MUL有什么问题?那么糟糕吗?通过
mul/div
做*2/2就像纸上的人通过计算完整的乘法并对结果求和来做2345*10,而不是仅仅在2345的末尾加零。对于二进制值,“*10”是*2,“/10”是/2,所以您只需在末尾添加/删除一位。这就是左/右移位对二进制值的作用
div-HELP
是我看到的第一个错误(您没有将
dx
设置为任何值,但是
div r/m16
确实将
dx:ax
除以
r/m16
,请检查)。。。也许TD会更宽容地以dx=0开始您的代码,而DOS则不然。