求帮忙,申请分配内存从第3次开始时到最后的段首址一直是一样的
mdisp macro msg
lea dx,msg
mov ah,09h
int 21h
endm
data segment
head dw ?
pt dw ?
buff db ?,?,0ah,0dh,"$"
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,20
next:mov bx,1
mov ah,48h
int 21h
jc disp
mov es,ax
mov WORD ptr es:[0],cx
mov WORD ptr es:[2],0
cmp head,0
jnz go
mov head,es
jmp kkk
go: push ds
mov ds,pt
mov WORD ptr ds:[2],es
pop ds
kkk:mov pt,es
loop next
disp:mov bx,head
again:cmp bx,0
jz done
mov es,bx
mov ax,es:[0]
mov dl,10
idiv dl
add ax,3030h
lea bx,buff
mov [bx],2020h
cmp al,'0'
jle lower
mov [bx],al
inc bx
lower:mov [bx],ah
mdisp buff
mov bx,es:[2]
mov ah,49h
int 21h
jmp again
done:mov ah,4ch
int 21h
code ends
end start
最后应该显示20,19...1.
可只会显示20,19这两个数。用DEBUG调试后发现第1次申请内存空间AX=0172H,第二次AX=0174H,可从第三次到20次 AX就一直等于0008,这是怎么回事?另外分配空间的段首址会不会给出0000H这个段首址叱?