鱼C论坛

 找回密码
 立即注册
查看: 6892|回复: 12

[汇编作业] 检测点6.1

[复制链接]
发表于 2020-3-28 13:55:12 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 流风逸雪 于 2020-3-28 13:56 编辑

(1)
assume cs:codesg
codesg segment
        dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
start:
        mov ax,0
        mov ds,ax
        mov bx,0
        mov cx,8
s:        mov ax,[bx]
        mov cs:[bx],ax//dw对应地址为cs:从0到定义数量*2,将ds:[bx]的数覆盖dw
        add bx,2
        loop s
        
        
        mov ax,4c00H
        int 21h
codesg ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-28 15:04:20 | 显示全部楼层
(2)
assume cs:codesg
codesg segment
        dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
        dw 0,0,0,0,0
start:
        mov ax,cs//要将第二行作为栈空间的地址传递给ss,以便push和pop
        mov ss,ax
        mov sp,16
        mov ax,0
        mov ds,ax
        mov bx,0
        mov cx,8
s:        push [bx]
        pop cs:[bx]//入栈再出栈相当于传递值
        add bx,2
        loop s
        
        
        mov ax,4c00H
        int 21h
codesg ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 22:04:40 | 显示全部楼层
第二题, dw 0,0,0,0,0,0,0,0//后面是8个0
              mov sp,32
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-1 10:32:38 | 显示全部楼层
红尘摆渡人 发表于 2020-3-30 22:04
第二题, dw 0,0,0,0,0,0,0,0//后面是8个0
              mov sp,32

你仔细看我的注释,入栈再出栈不需要那么多0,事实上2个0就够了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-1 10:36:39 | 显示全部楼层
本帖最后由 流风逸雪 于 2020-4-1 11:43 编辑
红尘摆渡人 发表于 2020-3-30 22:04
第二题, dw 0,0,0,0,0,0,0,0//后面是8个0
              mov sp,32


其实就算0个数少于8,编译器也会分配16个00.问题在于入栈再出栈无论循环多少次占用的空间都不会超过2个0.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 22:52:19 | 显示全部楼层
楼主,请问
为啥说
0个数少于8,编译器也会分配16个00,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-2 16:56:39 | 显示全部楼层
流风逸雪 发表于 2020-4-1 10:32
你仔细看我的注释,入栈再出栈不需要那么多0,事实上2个0就够了

对的,实际上2个就够了,取决于你准备留的栈多大来设置,只要是>2 都可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 03:19:30 | 显示全部楼层
(2)题目不是要求10个字单元的栈空间吗?
怎么把题目都改了? 如果是10个字单元的栈空间,sp = 15 + 10 * 2 + 1 = 36 或 24H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-4 14:27:21 | 显示全部楼层
结果 4BDB吗?+
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-12 02:24:30 | 显示全部楼层
本帖最后由 qq113009 于 2021-10-12 02:41 编辑

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

使用道具 举报

发表于 2021-12-31 01:57:16 | 显示全部楼层
完全错误,看的我一脸懵逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-9 11:05:06 | 显示全部楼层
按照题目MOV SP,34H啊,我是这样理解的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-16 18:40:38 | 显示全部楼层
本帖最后由 snrjtg1 于 2022-2-16 19:48 编辑

怎么感觉取出来的第一个数就把栈顶给覆盖了
sp为8,一开始栈顶在0789的07上,然后第一次压入的【bx】是DS:0也就是0000:0里的数据,然后再pop cs:[bx]j是将0123中用ds:0中的数据给覆盖了,下一次就用0000:1中的数据将cd:[01]中的数据0456给覆盖了
这是我的理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 18:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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