实验5-第5题,SS也做中转
本帖最后由 linha0 于 2011-6-24 03:12 编辑assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c1 segment
db 0,0,0,0,0,0,0,0
c1 ends
code segment
start:
mov ax,c1
mov ss,ax ;不用栈,只是借用SS保存一下段地址
mov sp,10h ;用后面的8个字节,保存中断时的临时数据。或者mov sp,0
mov ax,a
mov ds,ax
mov ax,b
mov es,ax
mov bx,0
mov cx,8
s: mov al,es:
add al,
mov ss:,al
inc bl
loop s
mov ax,4c00h
int 21h
code ends
end start
但是,当中断时产生的临时数据(因为要放栈空间)超过8个字节时,结果就悲剧了:lol
事实证明,在调试时,结果是悲剧的:L
楼主定义了栈 可debug的结果却有错误 楼主说sp改为0我试了debug结果正确 却越栈了 怎么个回事呢 这种思维可行么 纠结 :Q 在不调试的情况下,这样会不会影响最终输出吗?在只取c1段的情况下……
或许在等我学完后面的知识,再来解答吧!:lol 本帖最后由 linha0 于 2011-6-24 03:14 编辑
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c1 segment
db 0,0,0,0,0,0,0,0
c1 ends
code segment
start: mov ax,a
mov ds,ax
mov bx,0
mov cx,4
s: mov ax,
mov dx,
add dh,ah
add dl,al
mov ,dx
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
来自 zhuayi112,只是把8次循环改成了4次循环
只是不知道把栈放在SS:0,有没有问题!
看帖就要回帖支持下 看看老帖,支持下 学习学习再学习
页:
[1]