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是国喊巧内唯一一家中文连载的大型视频教程。零基础开始讲解,通俗易
懂 ,以实战为目地,受到众多网友的一致好评。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)