| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 652 人关注过本帖
标题:[求助]请高人注释一下吧,小弟正在自学汇编,谢谢
只看楼主 加入收藏
SuperStar515
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2006-12-24
收藏
 问题点数:0 回复次数:3 
[求助]请高人注释一下吧,小弟正在自学汇编,谢谢
自学好不容易啊,大哥大姐们帮小弟一把吧。不胜感激!!!!!
data segment
yy1 db 'input name:','$'
yy2 db 'input a telephone number:','$'
yy3 db 'name',26 dup(' '),'tel.','$'
inbuf db 20,?,20 dup(?)
outname db 20 dup(?)
outphone db 9 dup(?)
data ends
code segment
telist proc far
assume cs:code,ds:data,es:data
begin:mov ax,data
mov ds,ax
mov es,ax
lea dx,yy1
mov ah,09h
int 21h
call input_name
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2h
int 21h
lea dx,yy2
mov ah,09h
int 21h
call inphone
call crlf
call printline
call crlf
telist endp
input_name proc near
call getchar
lea si, inbuf
lea di,outname
mov cl,[inbuf+1]
mov ch,0
add si,2
cld
rep movsb
xor bh,bh
mov bl,[inbuf+1]
mov al,24h
mov [outname+bx],al
ret
input_name endp
crlf proc near
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
crlf endp
getchar proc near
mov ah,0ah
mov dx,offset inbuf
int 21h
ret
getchar endp
inphone proc near
call getchar
lea di,outphone
lea si,inbuf
add si,2
mov cl,[inbuf+1]
sub ch,ch
cld
rep movsb
mov al,24h
mov [outphone+8],al
ret
inphone endp
showchar proc near
mov ah,09h
int 21h
ret
showchar endp
printline proc near
lea dx,yy3
call showchar
call crlf
lea dx,outname
call showchar
mov ah,2h
mov bl,0
mov dl,30
mov dh,3
int 10h
lea dx,outphone
call showchar
ret
printline endp
code ends
end begin
搜索更多相关主题的帖子: 注释 汇编 高人 自学 
2006-12-30 12:40
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
你的telist写错了位置,以下是加了注释的,数据段定义没加注释

data segment
yy1 db 'input name:','$'
yy2 db 'input a telephone number:','$'
yy3 db 'name',26 dup(' '),'tel.','$'
inbuf db 20,?,20 dup(?)
outname db 20 dup(?)
outphone db 9 dup(?)
data ends
code segment
assume cs:code,ds:data,es:data
begin:mov ax,data
mov ds,ax
mov es,ax
telist proc far
lea dx,yy1
mov ah,09h
int 21h ;输出'input name:'
call input_name ;调用input_name
mov dl,0dh ;
mov ah,2 ;
int 21h ;
mov dl,0ah ;
mov ah,2h ;
int 21h ;换行
lea dx,yy2 ;
mov ah,09h ;
int 21h ;输出'input a telephone number:'
call inphone ;调用inphone
call crlf ;调用crlf
call printline ;调用printline
call crlf ;换行
telist endp
input_name proc near ;完成名字的操作
call getchar ;调用getchar
lea si, inbuf ;取inbuf的有效地址
lea di,outname ;取outname的有效地址
mov cl,[inbuf+1] ;inbuf的长度作为rep movsb的次数
mov ch,0
add si,2 ;从ds:[si+2]开始移
cld ;清方向标志位为0
rep movsb ;相当于mov es:[di],ds:[si],不过要初始化si和di,上面已经初始化
xor bh,bh
mov bl,[inbuf+1] ;取inbuf长度
mov al,24h ;ax='$'
mov [outname+bx],al ;字符串以'$'结束
ret
input_name endp
crlf proc near ;功能:换行
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
crlf endp
getchar proc near ;功能:输入字符串
mov ah,0ah
mov dx,offset inbuf
int 21h
ret
getchar endp
inphone proc near ;功能:完成电话号码的操作(这里不注释了,同input_name)
call getchar
lea di,outphone
lea si,inbuf
add si,2
mov cl,[inbuf+1]
sub ch,ch
cld
rep movsb
mov al,24h
mov [outphone+8],al
ret
inphone endp
showchar proc near
mov ah,09h
int 21h
ret
showchar endp
printline proc near ;功能:完成输出操作
lea dx,yy3
call showchar ;输出字符串'name tel.'
call crlf ;换行
lea dx,outname
call showchar ;输出名字
mov ah,2h ;
mov bl,0 ;
mov dl,30 ;
mov dh,3 ;
int 10h ;这几句加上后,显示效果更不好,可以去掉,加上输出26个空格的语句
lea dx,outphone
call showchar ;输出号码
ret
printline endp
code ends
end begin

[此贴子已经被作者于2006-12-30 18:03:03编辑过]


2006-12-30 18:01
SuperStar515
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2006-12-24
收藏
得分:0 

谢谢了,


喜欢等待,因为等待是一门需要花费一生才能读懂的艺术。等待。。。
2006-12-30 21:45
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 

我先来慢慢学习一下!


2006-12-30 21:57
快速回复:[求助]请高人注释一下吧,小弟正在自学汇编,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035764 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved