yjcoke 发表于 2019-7-3 20:27:32

汇编内容6.2实验题

在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
                           inc bx
                           inc bx
                           loop a1
                           mov bx,0
                           mov cx,8
                  a2:pop
                           inc bx
                           inc bx
                           loop a2
                           mov 4c00H
                           int 21H
                           code ends
                           end start

newu 发表于 2019-7-4 00:28:45

问题1: 题目的答案中虽然栈空间给的很大,实际上push 和pop是对应的,有效使用只是一个字节
问题2: 题目的要求“实现依次用内存0:0~0:15单元中的内容改写程序中的数据”,难道要求不是更改程序中0~F中的数据吗?

yjcoke 发表于 2019-7-4 09:09:46

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


本题的题目是这样的。并不是需要修改0-15的数据。

xlt201314 发表于 2019-7-27 00:19:22

8个字是20H?应该是10H啊!也就是0到f的地址

huzhibin360 发表于 2019-7-27 10:31:37

本帖最后由 huzhibin360 于 2019-7-31 15:42 编辑

脑袋抽了,写的没让别人 看见吧

huzhibin360 发表于 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 一下 就明白了~
楼上谢的不是我写的~~我俩不是一个人
页: [1]
查看完整版本: 汇编内容6.2实验题