+ -
当前位置:首页 → 问答吧 → 谁会的帮我解释一下这个程序,希望具体一些。

谁会的帮我解释一下这个程序,希望具体一些。

时间: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






作者: fzn1314wudi   发布时间: 2011-04-28

这不难的,楼主还是多看看书吧。

作者: paullbm   发布时间: 2011-04-28