注册 登录
编程论坛 新人交流区

IBM-PC把我给难了,请教ing..

执着的F 发布于 2007-11-02 21:05, 409 次点击

小弟初学汇编,一知半解.甚不了解,想请各路高人帮忙.解释一下以下代码的各段意思.在此,先谢谢了.~
data segment
messageStart db 10,?
message db 10 dup('$')
messageEnd db 13,10,'$' ;用于在输出前回车换行
data ends
;----------------------------------------------------------------------------------
code segment
main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax

mov ax,data
mov ds,ax

lea dx,messageStart
mov ah,0ah
int 21h ;输入到message缓冲区

mov dx,offset messageEnd
mov ah,9
int 21h ;输出回车换行

mov dx,offset message
mov ah,9
int 21h ;输出我们输入的结果


ret
main endp
code ends
end start

3 回复
#2
执着的F2007-11-02 23:55
..为什么没有人帮我..
好惨哦 ..!!
#3
Lotus_Hypnos2007-11-03 09:44

这就是一段输入字符串并回显的程序吧,楼主的几句注释已经很清楚了,我再加几句


data segment ;定义数据段
messageStart db 10,?
message db 10 dup('$')
messageEnd db 13,10,'$' ;用于在输出前回车换行
data ends
;----------------------------------------------------------------------------------
code segment ;定义代码段
main proc far ;远过程调用
assume cs:code,ds:data
start:
push ds ;PSP的段地址(段地址在DS中)进栈
sub ax,ax
push ax ;PSP首地址的偏移地址(为0)进栈

mov ax,data ;用户数据段赋值
mov ds,ax

lea dx,messageStart ;将messageStart的偏移地址送dx
mov ah,0ah ;10号功能调用
int 21h ;输入到message缓冲区

mov dx,offset messageEnd ;将messageEnd的偏移地址送dx
mov ah,9 ;9号功能调用
int 21h ;输出回车换行

mov dx,offset message ;将message的偏移地址送dx
mov ah,9 ;9号功能调用
int 21h ;输出我们输入的结果


ret
main endp
code ends
end start

#4
执着的F2007-11-05 21:57

谢谢..~!!

1