鱼C论坛

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

[已解决]汇编内容6.2实验题

[复制链接]
发表于 2019-7-3 20:27:32 | 显示全部楼层 |阅读模式

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

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

x
在6.2的实验中,题目是逆序排放数据,我对题目一些不理解,请指导一下。
assume cs:code
code segment
DW 0123H,0456H,0789H,0ABCH,0DEFH,0FEDH,0CBAH,0987H
DW 0,0,0,0,0,0,0,0         ;此行应该是表示占用8个字,也就是16个字节,那么为什么书本上的要是16个0,那不就是占用32个字节了?数据明明16个字节就够用了。
         start:mov ax,cs
                           mov ds,ax
                           mov ss,ax
                           mov sp,32 ;如果按照我的理解 ,占用8个字,那么sp是20H就可以了,push以后,sp应该指向的是1E,一直到结束,SP指向10H,也没有超过栈顶,那么为什么0-F段的数据被串改了呢?
                           mov bx,0
                           mov cx,8
                    a1:push [bx]
                           inc bx
                           inc bx
                           loop a1
                           mov bx,0
                           mov cx,8
                    a2:pop [bx]
                           inc bx
                           inc bx
                           loop a2
                           mov 4c00H
                           int 21H
                           code ends
                           end start
最佳答案
2019-7-4 00:28:45
问题1: 题目的答案中虽然栈空间给的很大,实际上push 和pop是对应的,有效使用只是一个字节
问题2: 题目的要求“实现依次用内存0:0~0:15单元中的内容改写程序中的数据”,难道要求不是更改程序中0~F中的数据吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-4 00:28:45 | 显示全部楼层    本楼为最佳答案   
问题1: 题目的答案中虽然栈空间给的很大,实际上push 和pop是对应的,有效使用只是一个字节
问题2: 题目的要求“实现依次用内存0:0~0:15单元中的内容改写程序中的数据”,难道要求不是更改程序中0~F中的数据吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-4 09:09:46 | 显示全部楼层
newu 发表于 2019-7-4 00:28
问题1: 题目的答案中虽然栈空间给的很大,实际上push 和pop是对应的,有效使用只是一个字节
问题2: 题目 ...


本题的题目是这样的。并不是需要修改0-15的数据。
1.png
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-27 00:19:22 | 显示全部楼层
8个字是20H?应该是10H啊!也就是0到f的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-27 10:31:37 | 显示全部楼层
本帖最后由 huzhibin360 于 2019-7-31 15:42 编辑

脑袋抽了,写的没让别人 看见吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-31 15:47:08 | 显示全部楼层
SP 执行 32
执行完 第一段循环的结果是
00 00 00 00 00 00 00 00 87 09 AB C0 DE F0 EF 0D 0A BC 89 07 56 04 23 01 (大概这个意思也许有错乱)
然后在 POP 出栈 执行 第2个 循环
09 87 0C AB...........(大概这个意思)
我的理解是 后面的 16个自己 是 栈的存放
然后在 POP 回来
楼主自己 DEBUG 一下 就明白了~
楼上谢的不是我写的~~我俩不是一个人
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 00:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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