菜鸟关于汇编的一点问题,问题见注释,请各位大虾指教指教呀
时间:2011-05-02
来源:互联网
写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结果存放在D_SEG 段中的SUM中。其中AUGEND、ADDEND和SUM均为双精度数,AUGEND赋值为99251,ADDEND赋值为 -15962。
d_seg segment
augw label word ;label是做什么用的?这里未定义augw的值,是不是默认为值0?
augend dd 99251
sum dd ?
d_seg ends
e_seg segment
addw label word
addend dd -15962
e_seg ends
c_seg segment
main proc far
assume cs:c_seg,ds:d_seg,es:e_seg
start: push ds
sub ax,ax
push ax
mov ax,d_seg ;这条指令执行完后为什么ax寄存器的值变为07 10
mov ds,ax
mov ax,e_seg ;这条指令执行后为什么ax变成了07 11
mov es,ax
mov ax,augw
mov bx,augw+2
add ax,es:addw ;这句话是把ax里面的值和es相加?为什么要这样写啊?
adc bx,es:addw+2
mov word ptr sum,ax ;这里为什么要用word ptr,我把它去掉好像对结果没有什么影响
mov word ptr[sum+2],bx
ret
main endp
c_seg ends
end start
本人刚学汇编,这段代码有很多看不懂,请各位大虾多指教指教啊。。
d_seg segment
augw label word ;label是做什么用的?这里未定义augw的值,是不是默认为值0?
augend dd 99251
sum dd ?
d_seg ends
e_seg segment
addw label word
addend dd -15962
e_seg ends
c_seg segment
main proc far
assume cs:c_seg,ds:d_seg,es:e_seg
start: push ds
sub ax,ax
push ax
mov ax,d_seg ;这条指令执行完后为什么ax寄存器的值变为07 10
mov ds,ax
mov ax,e_seg ;这条指令执行后为什么ax变成了07 11
mov es,ax
mov ax,augw
mov bx,augw+2
add ax,es:addw ;这句话是把ax里面的值和es相加?为什么要这样写啊?
adc bx,es:addw+2
mov word ptr sum,ax ;这里为什么要用word ptr,我把它去掉好像对结果没有什么影响
mov word ptr[sum+2],bx
ret
main endp
c_seg ends
end start
本人刚学汇编,这段代码有很多看不懂,请各位大虾多指教指教啊。。
作者: z373415312 发布时间: 2011-05-02
augw label word ;label是做什么用的?这里未定义augw的值,是不是默认为值0?
label是标号伪指令,表示下一数据augen的地址与augw是一样的;
mov ax,d_seg ;这条指令执行完后为什么ax寄存器的值变为07 10
这条指令是把数据段d_seg的段地址赋给寄存器ax;
mov ax,e_seg ;这条指令执行后为什么ax变成了07 11
这条指令是把附加段e_seg的段地址赋给寄存器ax;
add ax,es:addw ;这句话是把ax里面的值和es相加?为什么要这样写啊?
因为默认的数据段是ds;
mov word ptr sum,ax ;这里为什么要用word ptr,我把它去掉好像对结果没有什么影响
这里word ptr表示是2个字节的内存地址,这里不写,没有关系,因为后面的ax已经说明了它的大小
label是标号伪指令,表示下一数据augen的地址与augw是一样的;
mov ax,d_seg ;这条指令执行完后为什么ax寄存器的值变为07 10
这条指令是把数据段d_seg的段地址赋给寄存器ax;
mov ax,e_seg ;这条指令执行后为什么ax变成了07 11
这条指令是把附加段e_seg的段地址赋给寄存器ax;
add ax,es:addw ;这句话是把ax里面的值和es相加?为什么要这样写啊?
因为默认的数据段是ds;
mov word ptr sum,ax ;这里为什么要用word ptr,我把它去掉好像对结果没有什么影响
这里word ptr表示是2个字节的内存地址,这里不写,没有关系,因为后面的ax已经说明了它的大小
作者: leetow2003 发布时间: 2011-05-02
楼上给解答的很详细。。。结贴 散分~~~~~~~~
作者: wangzaiwei2006 发布时间: 2011-05-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28