第十三章 13.3 int,iret和栈的深入理解 问题
本帖最后由 sunjunjian 于 2011-4-3 19:07 编辑程序一:
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0
mov cx,offset s2-offset do0 ;这里编译到debug中cx=1543h气死我了
mov ax,0
mov es,ax
mov di,200h
cld
rep movsb
mov ax,0
mov ds,ax
mov word ptr ds:,200h
mov word ptr ds:,0
mov ax,4c00h
int 21h
do0: push bp
mov bp,sp
dec cx
jcxz s3
add ,bx
s3: pop bp
iret
s2: nop
code ends
end start
以上是安装的中断 下面是要运行的程序要用到上面中断
程序二:
assume cs:code
code segment
start: mov ax,0b800h
mov ds,ax
mov si,160*12
mov bx,offset s-offset se ;这里等于50h 好像也不对
mov cx,80
s: mov byte ptr ds:,'!'
add si,2
int 7ch
se: nop
mov ax,4c00h
int 21h
code ends
end start
在运行程序二时 运行到 int 7ch指令后 cs=0000 ip=0000 按道理因该是 cs=s的段地址 ip=s的偏移地址
也不知道问题到底出在哪了 题目的要求是什么?提问的时候要把问题写清楚,不然来看的人不知道目标是什么,又怎么找问题所在呢? “这里编译到debug中cx=1543h气死我了”前的分号要用英文格式。
“这里等于50h 好像也不对””前的分号要用英文格式。
页:
[1]