帮忙解读一下这个很简单的汇编程序,能不能一句一句解释?谢谢

帮忙解读一下这个很简单的汇编程序,能不能一句一句解释?谢谢,第1张

DDATA SEGMENT数据段

D1 DW 1234H字变量D1,初始化为1234H,即十六进制的1234

D2 DW 5678H

P1 DD ? 双字变量,问号野仔梁戚基表示不定义初始值

P2 DD ?

DDATA ENDS数据段结束

EDATA SEGMENT 附加段

E1 DB ?

E2 DW 4 DUP(?) ;4个字

EDATA ENDS

SSTACT SEGMENT STACK 'STACK' 堆栈段

DW 100 DUP(?)

SSTACK ENDS

CCODE SEGMENT 代码段

MAIN PROC FAR MAIN过程

ASSUME CS:CCODE,DS:DDATA,SS:SSTACK 给各个段定分配相应的段寄存器,CS是代码段段寄存器,DS是数据段段寄存器,SS是堆栈段段寄存器颂运

START: 程序标号

MOV AX,SSTACK 初始化SS,要用AX寄存器作中转,不能直接将SSTACK赋予SS

MOV SS,AX

PUSH DSDS入栈

SUB AX,AXAX清零

PUSH AX 返回DOS用

MOV AX,DDATA;初始化DS

MOV DS,AX

MOV AX,EDATA ; 初始化ES

MOV ES,AX

L1: MOV BA,OFFSET D1原来少了分号,将D1地址赋予BX

一句有问题,BA是什么?看下句应该是BX

MOV AX,[BX] 将BX内容对应的地址里存的数赋予AX

MOV DX,OO是什么?是0吗?

MUL WORD PTR [BX+2] 乘上D2,即完成AX*D2,也就是D1*D2,结果保存到了DX:AX

MOV BX,OFFSET P1P1地址赋予BX

MOV [BX],AX 将D1*D2结果保存在P1

MOV [BX+2],DX

RET 过程结束,返回

MAIN ENDP过程定义结束

CCODE ENDS CCODE结束

END START START结束,编译程序会从START标号处开始执行

诚如楼上所兆庆唤言,在我们看来这个程序注释已经写得很详尽了。族凯如果要再注释,那就是搬书本逐条解释每个指令的含义了。

所以你最好能说明一下:哪里不明白、哪里看不懂。有的才能放差悄矢。

关于这个问题 你可以去搜索一下编,程,回,忆,录,之unity3d。零基础开始学起,就郑兄键算是菜鸟都能看懂

编程回忆录已经有八年的历史,是教程团队旗下的一个在线网络培训机构,目前已录制十三个科目,涉及到互联网开发尘纳,软件开

发,游戏开发(虚拟现实开发),现在编程回忆录的Unity3D是国喊巧内唯一一家中文连载的大型视频教程。零基础开始讲解,通俗易

懂 ,以实战为目地,受到众多网友的一致好评。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12560903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存