实验5
第5题: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
cc segment
db 0,0,0,0,0,0,0,0
cc ends
code segment
start:
mov ax,cc
mov ds,ax
mov ax,a
mov ss,ax
mov bx,0
mov cx,8
s: mov dl, ss:
mov , dl
inc bx
loop s
mov ax,b
mov ss, ax
mov bx,0
mov cx,8
s1: mov dl,ss:
add , dl
inc bx
loop s1
mov ax,4c00h
int 21h
code ends
end start
第6题:
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,0
mov ax,a
mov ds,ax
mov bx,0eh
mov ax,b
mov ss,ax
mov sp,10h
mov cx,8
s: push
sub bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
本帖最后由 jackz007 于 2022-8-22 00:08 编辑
实验5在堆栈段中保存初始化数据是犯大忌的,我们知道,堆栈空间的使用是自顶向下的,从 SP 向下都属于自由空间,原则上是可以被任意使用的,只有位于 SP 以上的数据才是安全的。所以,代码中,a segment 中所有初始化的数据实际上是处于很大的风险之中,只要堆栈被使用,这些数据分分钟会被改变,而且,离 SP 越近,危险程度就会越高。所以,在堆栈中存入初始化的数据极不靠谱。 jackz007 发表于 2022-8-21 22:19
实验5在堆栈段中保存初始化数据是犯大忌的,我们知道,堆栈空间的使用是自顶向下的,从 SP 向下都 ...
受教了
页:
[1]