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

📄 zxl9.asm

📁 模拟银行卡取款操作
💻 ASM
字号:
cseg segment
     assume  cs:cseg
start: 
       mov  dx,222h
       mov  al,0c1h
       out  dx,al
     
 t0:   in   al,dx
       test al,80h
       jnz  t0
     
       mov  al,0h
       out  dx,al
       mov  al,30h
       out  dx,al
       
       mov  ax,8100h
       mov  ds,ax
       mov  cx,3
     
tt1:   push cx  

 t3:   mov  dx,222h     ;接收一个字节
       in   al,dx
       test al,0fh
       jz   t3
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
   
       mov  dx,222h    ;输出8个点
       mov  al,90h
       out  dx,al
       mov  cx,8

       mov  al,80h
       mov  dx,220h
 t2:   out  dx,al
       loop t2

       mov  si,offset hh    ;接收银行卡号
       mov  cx,8
       mov  dx,222h
       mov  al,90h
       out  dx,al
       
 t1:   mov  dx,222h
       in   al,dx
       test al,0fh
       jz   t1
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
       mov  [si],al
       inc  si
       mov  bx,offset tab
       xlat
       out  dx,al
       loop t1
 
       cld                  ;判断卡号是否正确并显示结果
       mov  di,offset yh1
       mov  ax,8100h
       mov  es,ax
       mov  cx,3            ;3个用户
       
te1:   push cx
       mov  bx,di
       mov  si,offset hh       
       mov  cx,8       
       rep cmpsb
       jz  te7
       mov  di,bx
       add  di,24
       pop  cx
       loop te1
       jmp  t7
te7:   mov  bl,80h
       jmp  t6
t7:    mov  bl,3fh
t6:    mov  dx,222h
       mov  al,90h
       out  dx,al
       mov  cx,8
       mov  al,bl
       mov  dx,220h
t4:    out  dx,al
       loop t4
    
       cmp  bl,80h
       jz   tx1
       
       pop  cx
       dec  cx
       cmp  cx,0
       jz  tmj
       jmp tt1
tmj:   jmp tm
       
       push di
xx:    pop  di
       push di 


tx1:  
       mov  dx,222h    ;输出8个点
       mov  al,90h
       out  dx,al
       mov  cx,8

       mov  al,80h
       mov  dx,220h
 tn2:  out  dx,al
       loop tn2  
           
       mov  dx,222h     ;接收选项
       in   al,dx
       test al,0fh
       jz   tx1
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
       push ax
       push ax
       mov  dx,222h
       mov  al,87h
       out  dx,al
       pop  ax
       mov  bx,offset tab
       xlat
       mov  dx,220h
       out  dx,al
       pop  ax
       
       mov  bx,offset zong
       mov  [bx],al
       mov  ah,0
       mov  1[bx],ah

       cmp  al,01h      ;判断选项
       jz  chaxun1
       cmp  al,02h
       jz  qukuan1
       cmp  al,03h
       jz  cunkuan1
       jmp  tm
       
chaxun1:    jmp chaxun
qukuan1:    jmp qukuan
cunkuan1:   jmp cunkuan
     
chaxun: push di
        mov  cx,3
ztt1:  pop  di
       push di
       push  cx
       mov  si,offset hh    ;接收银行卡查询密码
       mov  cx,8
       mov  dx,222h
       mov  al,90h
       out  dx,al
       
zt1:   mov  dx,222h
       in   al,dx
       test al,0fh
       jz   zt1
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
       cmp  al,11h
       jz   zt2
       mov  [si],al
       inc  si
       mov  al,40h
       out  dx,al
       loop zt1
       
zt2:   cmp  cx,2            ;判断查询密码
       jnz  zt7

       mov  si,offset hh 
       mov cx,6h

       rep cmpsb
       jnz  zt7
       mov  bl,80h
       jmp  zt6
zt7:    mov  bl,3fh
zt6:    mov  dx,222h
       mov  al,90h
       out  dx,al
       mov  cx,8
       mov  al,bl
       mov  dx,220h
zt4:    out  dx,al
       loop zt4
    
       cmp  bl,80h
       jz   ztx1
       
       pop  cx
       dec  cx
       cmp  cx,0
       jz   tmp
       jmp ztt1  
tmp:   jmp tm          
ztx1:    ;显示余额

       mov  dx,222h    ;输出8个点
       mov  al,90h
       out  dx,al
       mov  cx,8

       mov  al,80h
       mov  dx,220h
 tn1:  out  dx,al
       loop tn1  
       
       mov  dx,222h
       mov  al,87h
       out  dx,al
       mov  dx,220h
       mov  al,49h
       out  dx,al


       add  di,6
       mov  dx,222h    
       mov  al,90h
       out  dx,al

       mov  bx,10
       
       mov  ax,[di]

       
zt9:   mov  dx,0
       div  bx
       push ax
       mov  ax,dx
       mov  dx,220h
       push bx
       mov  bx,offset tab
       xlat

       out  dx,al

       pop  bx
       pop  ax
       cmp  ax,0
       jnz  zt9

 tz3:  mov  dx,222h     ;接收一个字节
       in   al,dx
       test al,0fh
       jz   tz3
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
       
       mov  bx,offset zong
       mov  ah,[bx]
       cmp  ah,01h
       jz   aa1
       cmp  ah,02h
       jnz   zy1
       mov  ah,1[bx]
       cmp  ah,1 
       jz   zy1
       jmp  aa2      
       
       
       
 aa1:  cmp  al,13h       ;接受'+'号,改密码
       jnz  zy1
 
       mov  dx,222h    ;输出8个点
       mov  al,90h
       out  dx,al
       mov  cx,8

       mov  al,80h
       mov  dx,220h
 tg1:  out  dx,al
       loop tg1  
       
       mov  dx,222h
       mov  al,87h
       out  dx,al
       mov  dx,220h
       mov  al,76h
       out  dx,al
       
       sub  di,12    ;接收银行卡查询新密码
       mov  cx,6
       mov  dx,222h
       mov  al,90h
       out  dx,al
       
zg2:   mov  dx,222h
       in   al,dx
       test al,0fh
       jz   zg2
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
       mov  [di],al
       inc  di
       mov  bx,offset tab
       xlat
       out  dx,al
       loop zg2

 zg3:  mov  dx,222h     ;接收一个任意字节
       in   al,dx
       test al,0fh
       jz   zg3
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
             
zy1:   pop  di
       jmp  xx
       
qukuan: push di
        mov  cx,3
qtt1:  pop  di
       push di
       push  cx
       
       
       
       mov  si,offset hh    ;接收银行卡取款密码
       mov  cx,8
       mov  dx,222h
       mov  al,90h
       out  dx,al
       
qt1:   mov  dx,222h
       in   al,dx
       test al,0fh
       jz   qt1
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
       cmp  al,11h
       jz   qt2
       mov  [si],al
       inc  si
       mov  al,40h
       out  dx,al
       loop qt1
       
qt2:   cmp  cx,2            ;判断取款密码
       jnz  qt7
       
       add  di,6
       mov  si,offset hh 
       mov cx,6h

       rep cmpsb
       jnz  qt7
       mov  bl,80h
       jmp  qt6
qt7:    mov  bl,3fh
qt6:    mov  dx,222h
       mov  al,90h
       out  dx,al
       mov  cx,8
       mov  al,bl
       mov  dx,220h
qt4:    out  dx,al
       loop qt4
    
       cmp  bl,80h
       jz   qtx1
       
       pop  cx
       dec  cx
       cmp  cx,0
       jz   tmp1
       jmp qtt1  
tmp1:   jmp tm     
    
qtx1:  sub  di,6
       jmp  ztx1   
       
 aa2:
 
       
       mov  dx,222h    ;输出8个点
       mov  al,90h
       out  dx,al
       mov  cx,8

       mov  al,80h
       mov  dx,220h
 tf2:  out  dx,al
       loop tf2  
       
       mov  dx,222h
       mov  al,87h
       out  dx,al
       mov  dx,220h
       mov  al,38h
       out  dx,al 
 
 
 
 
       mov bx,0    ;接收银行卡取款额  
       mov ah,0
       mov  cx,8
       mov  dx,222h
       mov  al,90h
       out  dx,al
       
qt11:   mov  dx,222h
       in   al,dx
       test al,0fh
       jz   qt11
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
       cmp  al,11h
       jz   qt22
       push ax
       shl  bx,1
       mov  ax,bx
       shl  bx,1
       shl  bx,1
       add  bx,ax
       pop  ax
       add  bx,ax
       push bx
       mov  bx,offset tab
       xlat
       out  dx,al
       pop  bx
       loop qt11 
qt22:   mov  ax,[di]
       cmp   ax,bx
       js  qcc
       mov  cx,2[di]
       add  cx,bx
       cmp  cx,1000       ;每天取不能超过1000元
       jns  qcc1
       mov  2[di],cx
       sub  ax,bx
       mov  [di],ax
       mov  al,40h
       jmp  qw
 qcc:  mov  al,8h
       jmp  qw
 qcc1: mov  al,1h
  qw:  push ax
       mov  dx,222h
       mov  al,87h
       out  dx,al
       pop  ax
       mov  dx,220h
       out  dx,al
       
       
 tq3:  mov  dx,222h     ;接收一个字节
       in   al,dx
       test al,0fh
       jz   tq3
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx 
       
       cmp  al,13h       ;接受'+'号,改密码
       jz   aa3
       mov  bx,offset zong
       mov  ah,1
       mov  1[bx],ah
       sub  di,6
       jmp  ztx1
 
 aa3:  mov  dx,222h    ;输出8个点
       mov  al,90h
       out  dx,al
       mov  cx,8

       mov  al,80h
       mov  dx,220h
 tg4:  out  dx,al
       loop tg4  
       
       mov  dx,222h
       mov  al,87h
       out  dx,al
       mov  dx,220h
       mov  al,76h
       out  dx,al
       
       sub  di,6    ;接收银行卡取款新密码
       mov  cx,6
       mov  dx,222h
       mov  al,90h
       out  dx,al
       
qg2:   mov  dx,222h
       in   al,dx
       test al,0fh
       jz   qg2
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
       mov  [di],al
       inc  di
       mov  bx,offset tab
       xlat
       out  dx,al
       loop qg2

 qg3:  mov  dx,222h     ;接收一个任意字节
       in   al,dx
       test al,0fh
       jz   qg3
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
                    
           
       
 zy2:  pop  di
       jmp  xx 
 
 
cunkuan: push di

       mov bx,0    ;接收银行卡存款额  
       mov ah,0
       mov  cx,8
       mov  dx,222h
       mov  al,90h
       out  dx,al
       
ct11:   mov  dx,222h
       in   al,dx
       test al,0fh
       jz   ct11
       mov  al,40h
       out  dx,al
       mov  dx,220h
       in   al,dx
       cmp  al,11h
       jz   ct22
       push ax
       shl  bx,1
       mov  ax,bx
       shl  bx,1
       shl  bx,1
       add  bx,ax
       pop  ax
       add  bx,ax
       push bx
       mov  bx,offset tab
       xlat
       out  dx,al
       pop  bx
       loop ct11 
ct22:  add  di,12
       mov  ax,[di]
       add  ax,bx
       mov  [di],ax
       sub  di,6
       jmp  ztx1

         jmp  tm
tab  db  3fh,6h,5bh,4fh,66h,6dh,7dh,7h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
yh1  db  1,2,3,4,5,6,7,8
     db  1,1,1,1,1,1
     db  2,2,2,2,2,2
     dw  2000
     dw  0
yh2  db  8,7,6,5,4,3,2,1
     db  3,3,3,3,3,3
     db  4,4,4,4,4,4
     dw  1500
     dw  0
yh3  db  8,8,8,8,6,6,6,6
     db  5,5,5,5,5,5
     db  6,6,6,6,6,6
     dw  2500
     dw  0
     
zong db  0,0
zc   db  0ah
hh   db  8 dup(?)
 tm:    jmp tm
cseg   ends
       end  start

⌨️ 快捷键说明

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