wzy199806 发表于 2019-4-7 14:50:58

实验5 ,第5题

代码如下:
assume cs:code
a segment
        dw 1,2,3,4,5,6,7,8
a ends
b segment
        dw 1,2,3,4,5,6,7,8
b ends
cc segment
        dw 0,0,0,0,0,0,0,0
cc ends
code segment
start:
        mov bx,16                //因为考虑到我下面用入栈的形式 所以我吧bx指向最后的子单元了
        mov ax,a
        mov ds,ax
        mov ax,cc
        mov ss,ax
        mov sp,10h
        mov ax,0
        mov cx,8
        s:
        add ax,
        add ax,
        sub bx,2
        push ax
        loop s
       
        mov ax,4c00h
        int 21h

code ends
end start
为什么结果不对呢
结果为:47 00 43 00 3D 00 35 00-2B 00 1F 00 11 00 01 00
求大佬帮帮忙 小白刚接触

wzy199806 发表于 2019-4-7 14:56:17

不用栈的就可以这是为什么呢 求大佬解释一下 是不是我那个 ss哪里不应该那么设置呢   。。。。我改过之后的
assume cs:code
a segment
        dw 1,2,3,4,5,6,7,8
a ends
b segment
        dw 1,2,3,4,5,6,7,8
b ends
cc segment
        dw 0,0,0,0,0,0,0,0
cc ends
code segment
start:
        mov bx,0
        mov ax,a
        mov ds,ax
        mov ax,0
        mov cx,8
        s:
        add ax,
        add ax,
        mov ,ax
        add bx,2
        push ax
        loop s
       
        mov ax,4c00h
        int 21h

code ends
end start


jackz007 发表于 2019-4-7 17:26:13

本帖最后由 jackz007 于 2019-4-7 18:23 编辑

      bx 指向加数,属于关键参数,不允许随意修改,既然修改了,结果也自然就跟着改变了,就应该欣然接受。

      所以结论就是,bx = 0 不可更改,必须改回去。

wzy199806 发表于 2019-4-8 14:23:48

jackz007 发表于 2019-4-7 17:26
bx 指向加数,属于关键参数,不允许随意修改,既然修改了,结果也自然就跟着改变了,就应该欣然接受 ...

能不能 帮我指一下第几行是第一行吗 。。。bx我是想让偏移量为0好指向第一个数据单元

jackz007 发表于 2019-4-8 15:02:36

start:
      mov bx,16         ; 原代码是 movbx,0
. . . . . .
      mov ax,0
      mov cx,8
    s:add ax,
      add ax,
. . . . . .

wzy199806 发表于 2019-4-8 15:18:44

jackz007 发表于 2019-4-8 15:02


明白了那我第一个方法 用入栈的方式是不是就有点不妥了就只能是 用赋值的方式来进行啊

jackz007 发表于 2019-4-8 16:27:51

wzy199806 发表于 2019-4-8 15:18
明白了那我第一个方法 用入栈的方式是不是就有点不妥了就只能是 用赋值的方式来进行啊

      一切取决于你的预期,就看你想要达到什么样的目的了。
页: [1]
查看完整版本: 实验5 ,第5题