当前位置: 代码迷 >> 汇编语言 >> 求详解,该怎么解决
  详细解决方案

求详解,该怎么解决

热度:9689   发布时间:2013-02-26 00:00:00.0
求详解
首先将FIRST字变量与SECONFD字变量相加,结果存入THIRD1存储字中,然后将FIRST与SECOND两个字变量相乘,结果存入THIRD2开始的两个字中。
提示:FIRST与SECOND都是字变量,因此存放和的THIRD1单元也必须是字变量。而存放积的单元THIRD2必须是双字。
下面是此题目老师给的答案,可是不理解呀。求问高手。

Data segment
FIRST dw 1234h 这两个是什么意思??1234H,4567H是肿么出来的呀??
SECONFD dw 4567h
THIRD1 dw ?
THIRD2 dd ?
Data ends
Code segment
assume cs:Code,ds:Data
Start:
mov ax,data
mov ds,ax

mov ax,FIRST
add ax,SECONFD;相加
mov THIRD1,ax

mov ax,FIRST
mul SECONFD;相乘

mov word ptr THIRD2,ax 这个为什么要有word ptr 呀??
mov word ptr THIRD2+2,dx 这里的DX,是什么情况出现的呀??
mov ah,0 ;暂停
int 16h 求问暂停为何呀??
mov ah,4ch ;结束
int 21h
Code ends
end Start 





------解决方案--------------------------------------------------------
>> 这两个是什么意思??1234H,4567H是肿么出来的呀??
这就是两个随便设置的测试数据而已,没有什么怎么来的。

>> 这个为什么要有word ptr 呀??
因为 THIRD2 定义的是 dd 类型,dword 长度的;ax 则是 word 的,所以为了避免汇编程序报错,就明确告诉它操作数的大小。

>> 这里的DX,是什么情况出现的呀??
不了解 mul 指令?DX 应该是上面的 mul SECOND 指令的乘法结果的高位 word,完整结果是 DX:AX。

>> 求问暂停为何呀??
应该是为了方便在调试软件里查看结果吧。其实,这个方法并不合适,除非是之前有显示结果。
  相关解决方案