鱼C论坛

 找回密码
 立即注册
查看: 3864|回复: 5

[汇编作业] 王爽汇编实验五(4)答案不解!

[复制链接]
发表于 2014-2-11 10:13:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 HB无影 于 2014-2-11 10:13 编辑

实验5(1)
0assume cs:code,ds:data,ss:stack                                
data segment
        dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
stack segment
        dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:  mov ax,stack
        mov ss,ax
        mov sp,16
        mov ax,data
        mov ds,ax
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]
        mov ax,4c00h
        int 21h
code ends
end
实验5(3)
assume cs:code,ds:data,ss:stack
code segment
start:  mov ax,stack
        mov ss,ax
        mov sp,16
        mov ax,data
        mov ds,ax
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]
        mov ax,4c00h
        int 21h
code ends
data segment
        dw 0123h,0456h
data ends
stack segment
        dw 0,0
stack ends

end  
不指明程序入口,用masm5.0调试依然通过(附下图),可网上很多答案都说(1)不可以正确执行,(3)可以正确执行是什么意思啊,包括甲鱼答案也是(附下图)

甲鱼实验5(4)答案

甲鱼实验5(4)答案
实验5(1)cmd窗口:
1.PNG 实验5(3)cmd窗口:
3.PNG







想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-11 10:48:38 | 显示全部楼层
对于你的问题,我手上暂时没有工具尝试调试,暂时给你简单的说一下吧。
程序开始的时候,如果end 后面没有标号,就直接从加载的地方(程序正文第一行,也就是assume的下一行)开始执行,之所以大家都说(3)可以执行,是因为(3)的assume下面第一句就是代码段的开始,正好是你想让程序执行的第一句,而且后面你也设置了ss和ds,所以可以正常执行,而(1) end 后面没有标号,说明程序会从data segment开始执行,所以应该是执行的结果和你预想的不一样的。
但是具体5.0是不是做了更改,在程序预编译前,把伪指令assume关联的寄存器,先做重定位,先定位到CS所指的位置,我就不太清楚了,如果是那样的话,程序应该也可以正常执行,所有程序将在CS关联的地址开始执行,这个楼主自己可以写程序测试一下。
单位好多编程和Hacker软件不让用,等我回家测试一下,再回复你吧。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-11 11:59:45 | 显示全部楼层
2L解释的到位!
第3个的代码,第一条就是指令,所以它肯定是能执行啦,即使没有用end指出程序退出
第1个和第2个,第一条不是指令,是数据段,存放的是数据,就不执行啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-11 12:02:11 | 显示全部楼层
我也学习了,这里的人真好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-11 13:36:01 | 显示全部楼层
本帖最后由 无念道长 于 2014-2-11 13:37 编辑

我回家帮你测试了,(1)程序在执行时,第一条语句16进制码是"2301"(存储时先存低八位,再存高八位,所以顺序是反着的),翻译成汇编语言是“AND AX,[BX+DI]”,是不对的,我家用的就是masm5.0,所以解释就如上次我回复的

评分

参与人数 2鱼币 +7 贡献 +2 收起 理由
HB无影 + 2 感谢楼主无私奉献!
s0512 + 5 + 2 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-11 18:35:39 | 显示全部楼层

懂了,他们说的3能正确执行那个意思懂了,你说的很详细也很ok
谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-27 21:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表