21,459
社区成员
发帖
与我相关
我的任务
分享
;************************************
data segment
org 2000h
string db 'hello,world$'
data ends
;************************************
code segment
main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ah,09h
lea dx,string;调试的时候dx=2000h,但是'hello,world$'存在ds:2100中???为什么?
int 21h
ret
main endp
code ends
end start
;************************************
data segment
org 2000h
string db 'hello,world$'
data ends
;************************************
code segment
main proc far
assume cs:code,ds:data
start:
; 这句话是让最后程序返回不会报错的
; retf 地址 ds:ax
push ds
sub ax,ax
push ax
; 这里设置一下,让ds指向data段就没问题了
mov ax,data
push ax
pop ds
mov ah,09h
lea dx,string
int 21h
ret
main endp
code ends
end start
mov ah, 4ch
int 21h
mov ax, data
mov ds, ax