考试郁闷者 发表于 2012-7-5 00:02:50

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

本帖最后由 考试郁闷者 于 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:
add bx,2
loop s

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

hxs554f 发表于 2012-7-5 07:01:24

最好贴出源代码

NeBen 发表于 2012-7-5 10:17:37

贴出源代码

meiyoudao 发表于 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

       add bx,2

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

code ends

end start

极品飞车 发表于 2012-7-12 13:45:07

14.mov sp,10h,这里错了,栈段长度不够

无限幻想 发表于 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
            add bx, 2
                loop s

      mov ax, 4c00h
                int 21h
code ends
end start
你的答案就是栈顶设置错误,SP 应为16,不然存不下8个数,或者是你画葫芦的时候画失误了,呵呵

平凡的大海 发表于 2012-7-26 10:12:42

极品飞车 发表于 2012-7-12 13:45 static/image/common/back.gif
14.mov sp,10h,这里错了,栈段长度不够

我写的就是10H 但就没有报错啊

平凡的大海 发表于 2012-7-26 10:13:29

无限幻想 发表于 2012-7-26 08:13 static/image/common/back.gif
我给一个新思维答案,解题思路是实验五第二题第四个问题答案的结论
assume cs: code



16=10H   啊

无限幻想 发表于 2012-7-27 08:53:34

不好意思,我把你的程序debug了,是正确的,你之所以遇到调试问题是可能系统造成的。

无限幻想 发表于 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:
       addbx, 2
       loop s
          
           mov ax, 4c00h
           int 21h
code ends
end start
我反复用debug调试了,原先的程序在loop那儿用p就可以通过,一直用t到最后3个就会报错,后来研究了sp的值,发现达到22的时候程序运行无误不会出错,但是查看ss段数据,就不是那么回事,比16多出来的空间有垃圾值存在,08不是从ss:0开始的
页: [1]
查看完整版本: 王爽老师的汇编实验五(6)题