当前位置: 代码迷 >> 汇编语言 >> 这个汇编程序错哪了?计算W=X+(Y-Z)
  详细解决方案

这个汇编程序错哪了?计算W=X+(Y-Z)

热度:722   发布时间:2013-02-26 00:00:00.0
这个汇编程序哪里错了?计算W=X+(Y-Z)。
DATA SEGMENT
 X DD 12345678H  
 Y DD 23458593H
 Z DD 32847040H
 W DD ?
DATA SEGMENT
CODE SEGMENT
 ASSUME CS:CODE,DS:DATA
START:
 MOV AX,DATA
 MOV DS,AX
 MOV AX,Y
 MOV DX,Y+2
 SUB AX,Z
 SBB DX,Z+2
  ADD AX,X
 ADC DX,X+2
  MOV W,AX
 MOV W+2,DX
 MOV AH,4CH
 INT 21H
CODE ENDS
 END START


------解决方案--------------------------------------------------------
Assembly code
DATA SEGMENT X DD 12345678H   Y DD 23458593H Z DD 32847040H W DD ?;DATA SEGMENTDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,word ptr Y MOV DX,word ptr Y+2 SUB AX,word ptr Z SBB DX,word ptr Z+2 ADD AX,word ptr X ADC DX,word ptr X+2 MOV word ptr W, AX MOV word ptr W+2,DX MOV AH,4CH INT 21HCODE ENDS END START
------解决方案--------------------------------------------------------
程序看起来没错,具体是什么问题?
------解决方案--------------------------------------------------------
一.DATA没段结束伪指令(粗心大意).
二.变量在被定义成DWORD后用引用变量名的方式来进行非DWORD(传送)操作应加类型属性限定操作符进行限定.
------解决方案--------------------------------------------------------
为什么要写的这么复杂哦,定义成DD类型的,可以用EAX,ECX,EDX,EBX来计算,就不需要赋值两次了