无名似名 发表于 2018-4-1 21:43:54

实验5(6)

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 ax,a
    mov ds,ax
    ;源数据地址

    add ax,1
    mov ss,ax
    mov ax,16
    add sp,ax
    ; 构造栈

    mov ax,b
    mov es,ax
    ;目标数据地址

    mov bx,0
    mov cx,8

sl: push ds:
    inc bx
    inc bx
    loop sl
    ; 存入栈

    mov bx,0
    mov cx,8

ddl:pop es:
    inc bx
    inc bx
    loop ddl
    ; 出栈

    mov ax,4c00h
    int 21h

code ends
end start


调试半天才搞定,一点注意
sp的计算要从0计算,16个字节数据最后一个数据是第15字节所以要设sp=16
有个疑问
给ss sp赋值后 栈中数据会改变,不是不应该改变么?

yuefeng521 发表于 2018-6-21 00:29:35

mov ax,a
mov ds,ax
mov ax,b
mov es,ax

mov bx,0
mov cx,8
mov dx,8
s:    mov al,
       push bx
       mov bx,dx
       mov es:,al
       pop bx
       sub dx,1
       inc bx
       loop s

这个不知道怎么样(-o-)/

ds1711 发表于 2019-3-5 20:37:45

你好,我问一下:
add ax,1
mov ss,ax
这步是干什么的,一定要mov ss,ax+1吗,这个ax+1是一定的还是有什么范围

fishlovedream 发表于 2019-8-19 13:13:27

assume cs:code
a segment
    dw 1,2,3,4,5,6,7,8,9,0ah
a ends
b segment
    db 0,0,0,0,0,0,0,0
b ends
code segment
    start:
    mov ax,cs
    mov ss,ax
    mov sp,16
   
    mov ax,a
    mov ds,ax
   
    mov ax,b
    mov es,ax
   
    mov cx,8
    mov bx,0

s:push ds:
    mov dx,ds:
    mov es:,dx
    add bx,2
    loop s
      
    code ends
end start

hoosen 发表于 2019-9-24 17:03:52

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 ax,a
                mov ds,ax

                mov ax,b
                mov ss,ax
                mov sp,10h

                mov bx,0
                mov cx,8

        s:        mov ax,
                push ax

                add bx,2

                loop s

code ends

end start


这个对不对 各位帮忙看看不 跪谢

苏小白 发表于 2019-10-6 21:54:04

sp从0计算到第15个字节,怎么不是sp=10(sp是十六进制吧)

major_lyu 发表于 2020-2-14 21:56:02

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 ax, a
      mov ds, ax
      
      mov ax, b
      mov ss, ax
      mov sp,10h
      
      mov cx, 8
    s:push
      add bx,2
      loop s
      
      mov ax, 4c00h
      int 21h

code ends

end start
我是这么写的,调试结果是对的。不知道大家为什么写的那么复杂。是不是我理解错了?
页: [1]
查看完整版本: 实验5(6)