谁会的帮我解释一下这个程序,希望具体一些。
时间:2011-04-28
来源:互联网
第一个:data segment
enterMsg db "Please enter a line of characters(num of chars <= 100):",13,10,13,10,'$'
printMsg db 13,10,"You've entered:",13,10,'$'
buffer db 103 dup (?)
errorMsg db 13,10,"ERROR: number of characters greater than 100, please press ENTER to quit.",'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
mov bx, offset buffer
mov byte ptr [bx], 13
mov byte ptr [bx+1], 10
add bx, 2
mov si, 0
mov ah, 9h
mov dx, offset enterMsg
int 21h
mov ah, 1h
next:
int 21h
cmp al, 13
jz done
cmp si, 100
jz error
mov byte ptr [bx+si], al
inc si
jmp next
error:
mov dx, offset errorMsg
mov ah, 9h
int 21h
continue:
mov ah, 7h
int 21h
cmp al, 13
jnz continue
jmp quit
done:
mov dl, 13
mov ah, 2h
int 21h
mov dl, 10
int 21h
mov byte ptr [bx+si], '$'
mov dx, offset printMsg
mov ah, 9h
int 21h
mov dx, offset buffer
int 21h
quit:
mov ax, 4c00h
int 21h
code ends
end start
第二个:
DATAS SEGMENT
n equ 8
buf db n+1
count db 0
char db n+1 dup(?),'$'
password db n+1 dup(?) ,'$'
prompt db 'please 8 character',13,10,'$'
DATAS ENDS
STACKS SEGMENT
db 128 dup(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea dx,prompt
mov ah,9
int 21h
mov cx,8 ;通过键盘循环读入8个字符的密码 存入到 buf中,即键盘keybuf 缓冲区
mov si,0
again: mov ah,7
int 21h
mov buf[si],al
inc si
loop again
mov cx,8 ;循环将keybuf 里面的内容读出到password 段里面
mov si,0
xagain:
mov dl,buf[si]
mov password[si],dl
inc si
loop xagain
lea dx,password;将密码字段里面的内容读出来
mov ah,9
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
enterMsg db "Please enter a line of characters(num of chars <= 100):",13,10,13,10,'$'
printMsg db 13,10,"You've entered:",13,10,'$'
buffer db 103 dup (?)
errorMsg db 13,10,"ERROR: number of characters greater than 100, please press ENTER to quit.",'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
mov bx, offset buffer
mov byte ptr [bx], 13
mov byte ptr [bx+1], 10
add bx, 2
mov si, 0
mov ah, 9h
mov dx, offset enterMsg
int 21h
mov ah, 1h
next:
int 21h
cmp al, 13
jz done
cmp si, 100
jz error
mov byte ptr [bx+si], al
inc si
jmp next
error:
mov dx, offset errorMsg
mov ah, 9h
int 21h
continue:
mov ah, 7h
int 21h
cmp al, 13
jnz continue
jmp quit
done:
mov dl, 13
mov ah, 2h
int 21h
mov dl, 10
int 21h
mov byte ptr [bx+si], '$'
mov dx, offset printMsg
mov ah, 9h
int 21h
mov dx, offset buffer
int 21h
quit:
mov ax, 4c00h
int 21h
code ends
end start
第二个:
DATAS SEGMENT
n equ 8
buf db n+1
count db 0
char db n+1 dup(?),'$'
password db n+1 dup(?) ,'$'
prompt db 'please 8 character',13,10,'$'
DATAS ENDS
STACKS SEGMENT
db 128 dup(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea dx,prompt
mov ah,9
int 21h
mov cx,8 ;通过键盘循环读入8个字符的密码 存入到 buf中,即键盘keybuf 缓冲区
mov si,0
again: mov ah,7
int 21h
mov buf[si],al
inc si
loop again
mov cx,8 ;循环将keybuf 里面的内容读出到password 段里面
mov si,0
xagain:
mov dl,buf[si]
mov password[si],dl
inc si
loop xagain
lea dx,password;将密码字段里面的内容读出来
mov ah,9
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
作者: fzn1314wudi 发布时间: 2011-04-28
这不难的,楼主还是多看看书吧。
作者: paullbm 发布时间: 2011-04-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28