⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 password.asm

📁 这是一款汇编的日历
💻 ASM
字号:
  cseg         segment
  assume   cs:cseg,ds:cseg
  org   100h
  start:
  jmp   begin

  inbuf       db   10,?,10   dup   (?)
  username db '用户:Amadis.Mu.E-请输入用户口令',0dh,0ah,'$'
  compstr   db   '123456'
  cpstr_size             =   $   -   compstr
  msg1         db   'Welcome!'
  msg1_size               =   $   -   msg1
  msg2         db   'Invalid   password'
  msg2_size               =   $   -   msg2


  cr             proc
                  push   ax
                  push   bx
                  push   dx
                  mov   ah,2
                  mov   dl,0dh
                  int   21h
                  mov   ah,2
                  mov   dl,0ah
                  int   21h
                  pop   dx
                  pop   bx
                  pop   ax
                  ret
  cr             endp

  getpass proc   near
  push   ax
  push   bx
  push   cx
  push   dx
  mov   bx,dx
  mov   cl,[bx]
  mov   ch,cl
  or   cl,cl
  jz   @@9
  add   bx,2
  @@0:
  mov   ah,8
  int   21h
                  cmp   al,0
                  je   @@0
                  cmp   al,4bh
                  je   @@1
  cmp   al,8
  je   @@1
  cmp   al,0dh
  je   @@8
  cmp   cl,1
  ja   @@2
  mov   dl,7
  mov   ah,2
  int   21h
                  jmp   @@0
  @@1:
  cmp   cl,ch
  je   @@0
  dec   bx
  inc   cl
  mov   ah,2
  mov   dl,8
  int   21h
  mov   dl,20h
  int   21h
  mov   dl,8
  int   21h
  jmp   @@0
  @@2:
  mov   [bx],al
  inc   bx
  dec   cl
  mov   ah,2
  mov   dl,'*'
  int   21h
  jmp   @@0
  @@8:
  mov   [bx],al
                  pop   bx
                  push   bx
                  sub   ch,cl
                  mov   [bx+1],ch
  @@9:
  pop   dx
  pop   cx
  pop   bx
  pop   ax
  ret
  getpass endp

  begin:
  mov ax,seg username
  mov ds,ax
  
  mov dx,offset username
  mov ah,09h
  int 21h
  
  push   cs
  pop   ds
                  push   cs
                  pop   es

                  mov   ax,0f00h
                  int   10h

  mov   dx,offset   inbuf
                  call   getpass

                  call   cr

                  mov   si,offset   inbuf
                  mov   cl,[si+1]
                  cmp   cl,cpstr_size
                  jne   l2
                  add   si,2
                  mov   di,offset   compstr
                  cld
                  mov   ch,0
                  repe   cmpsb
                  jne   l2
                  mov   bp,offset   msg1
                  mov   bx,0001h
                  mov   cx,msg1_size
                  jmp   l3
  l2:
                  mov   bp,offset   msg2
                  mov   bx,0084h
                  mov   cx,msg2_size
  l3:
                  push   bx
                  push   cx
                  mov   ah,3
                  mov   bh,0
                  int   10h
                  mov   dl,0
                  mov   ax,1301h
                  pop   cx
                  pop   bx
                  int   10h

  mov   ah,4ch
  int   21h

  cseg ends
  end   start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -