鱼C论坛

 找回密码
 立即注册
查看: 2524|回复: 9

王爽老师的汇编实验五(6)题

[复制链接]
发表于 2012-7-5 00:02:50 | 显示全部楼层 |阅读模式
3鱼币
本帖最后由 考试郁闷者 于 2012-7-5 21:37 编辑

为什么一步步执行到倒数第三步就跳出了?和标准答案对比了,没有任何差别啊。。。但是就是跳出。。。已经有人问过了,但是没有解决啊!
assume cs:code,ds:a,ss:b
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start: 
mov ax,a
mov ds,ax
mov ax,b
mov ss,ax
mov sp,10h
mov bx,0
mov cx,8
s: push ds:[bx]
add bx,2
loop s

mov ax,4c00h
int 21h
code ends
end start
第一行去掉cs、es段也一样啊!!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-5 07:01:24 | 显示全部楼层
最好贴出源代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-5 10:17:37 | 显示全部楼层
贴出源代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-11 19:24:03 | 显示全部楼层
标准答案在这里
(6)程序如下,编写code段中代码,用PUSH指令将A段中的前8个字型数据,逆序存储到B段中。

assume cs:code

a segment

    dw 1,2,3,4,5,6,7,8

a ends

b segment

    dw 0,0,0,0,0,0,0,0

b ends

code segment

start: mov ax,a

       mov ds,ax   ;ds指向a段

       mov ax,b

       mov bx,0    ;ds:bx指向a段的第1个单元

       mov ss,ax

       mov sp,16   ;设置栈顶指向b:16

       mov cx,8

    s: push [bx]

       add bx,2

       loop s      ;将a段中0~16个单元逆次入栈

code ends

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

使用道具 举报

发表于 2012-7-12 13:45:07 | 显示全部楼层
14.mov sp,10h,这里错了,栈段长度不够
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-26 08:13:11 | 显示全部楼层
本帖最后由 无限幻想 于 2012-7-26 08:17 编辑

我给一个新思维答案,解题思路是实验五第二题第四个问题答案的结论
assume cs: code

a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
dw 0,0,0,0,0,0,0,0
b ends

code segment
start: mov bx, 0
        mov ax, cs
                sub ax, 1h
                mov ss, ax
                mov sp, 16
                mov ax, cs
                sub ax, 3h
                mov ds, ax
                mov cx, 8
               
      s:push [bx]
            add bx, 2
                loop s

        mov ax, 4c00h
                int 21h
code ends
end start
你的答案就是栈顶设置错误,SP 应为16,不然存不下8个数,或者是你画葫芦的时候画失误了,呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-26 10:12:42 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-26 10:13:29 | 显示全部楼层
无限幻想 发表于 2012-7-26 08:13
我给一个新思维答案,解题思路是实验五第二题第四个问题答案的结论
assume cs: code

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

使用道具 举报

发表于 2012-7-27 08:53:34 | 显示全部楼层
不好意思,我把你的程序debug了,是正确的,你之所以遇到调试问题是可能系统造成的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-27 09:40:26 | 显示全部楼层
assume cs: code , ds: a, ss: b

a segment
dw 1,2,3,4,5,6,7,8,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
dw 0,0,0,0,0,0,0,0
b ends

code segment
start: mov ax, a
       mov ds, ax
       mov ax, b
       mov ss, ax
       mov sp, 22
       mov bx, 0
       mov cx, 8
     s:push ds:[bx]
       add  bx, 2
       loop s
          
           mov ax, 4c00h
           int 21h
code ends
end start
我反复用debug调试了,原先的程序在loop那儿用p就可以通过,一直用t到最后3个就会报错,后来研究了sp的值,发现达到22的时候程序运行无误不会出错,但是查看ss段数据,就不是那么回事,比16多出来的空间有垃圾值存在,08不是从ss:0开始的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-20 11:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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