实验5(6)
assume cs:codea 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赋值后 栈中数据会改变,不是不应该改变么?
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-)/
你好,我问一下:
add ax,1
mov ss,ax
这步是干什么的,一定要mov ss,ax+1吗,这个ax+1是一定的还是有什么范围 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 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
这个对不对 各位帮忙看看不 跪谢 sp从0计算到第15个字节,怎么不是sp=10(sp是十六进制吧) 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]