|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
(2)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0,0,0
start: mov ax, codesg ;或mov ax, cs
mov ss,ax
mov sp, 24h ;或mov sp, 36 ;(第一版填1ah或26)
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
pop cs:[bx] ;或 pop ss:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
这个栈空间为什么一定要24h,下面循环只用22h,23h内存单元作为栈出入数据(sp在22h,24h中反复指向,那不就是dw定义的10个字我就用到了最后一个字单元22h,23h作为数据交换)
我用12h为什么就不行?12h不就是用了10h和11h两个内存单元出入数据,没覆盖掉0~f单元的啊。
中断机制要用到栈,这是你后面的课程
现在只要知道有中断机制这个东西就行了,这个问题不应该在现在纠结
中断机制是课程后半部分的重点
|
|