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

📄 1a.asm

📁 自己的课程设计
💻 ASM
📖 第 1 页 / 共 2 页
字号:
   MOV AH,0AH
   INT 21H
   ENTER
;------------
   OUTPUT BUF3
   LEA DX,BUF1   ;输入乘数
   MOV AH,0AH
   INT 21H
   CLS
;=====================
   MOV SI,2
   MOV BL,BUF[SI]          ;错误检测
   DEC SI
   CMP BL,0DH
   JE  AAAT
AAAS:
   INC SI
   MOV BL,BUF[SI]
   CMP BL,0DH
   JE  GGG
   CMP BL,'0'
   JB  FAR PTR WRONG2           
   CMP BL,'9'
   JBE  AAAS         
   CMP BL,'A'
   JB   FAR PTR WRONG2         
   CMP BL,'F'
   JBE   AAAS 
   JMP FAR PTR WRONG2 
;====================
;====================
;将乘数转化为真正得十六进制
GGG:
   MOV SI,2
   MOV CL,4
   MOV BL,BUF[SI]
   CMP BL,0DH
   JNE  SDFQ
AAAT:
   ENTER
   LEA DX,ALPH1
   MOV AH,9H
   INT 21H
   JMP FAR PTR ERR5
SDFQ:
   CMP BL,39H
   JA  TA2
   SUB BL,30H
TTW2:
   INC SI
   CMP BUF[SI],0DH
   JE  TN2
   ROL BL,CL
TER2:
   MOV AL,BUF[SI]
   CMP AL,39H
   JA  QQ2
   SUB AL,30H
DQQ2:
    OR BX,AX
    INC SI
    CMP BUF[SI],0DH
    JE  TN2
    JMP TN12
TA2:
  SUB BL,37H
  JMP TTW2
QQ2:
  SUB AL,37H
  JMP DQQ2
TN12:
  ROL BX,CL
  JMP TER2

;=========================
WRONG2:
  WRONG1 ERR5
;=================
;重复输入时清除缓冲区得数
AAA22:
   ENTER
   MOV AL,0CH ;清除键盘缓冲区
   INT 21H
   JMP FAR PTR CON2;继续则跳到开始
;===================
TN2:
   MOV BUF[SI],'$'
;=======================检测乘数
   MOV SI,2
   MOV DL,BUF1[SI]          ;错误检测
   DEC SI
   CMP DL,0DH
   JE  HVV
TTHH:
   INC SI
   MOV DL,BUF1[SI]
   CMP DL,0DH
   JE  HVVE
   CMP DL,'0'
   JB  WRONG2           
   CMP DL,'9'
   JBE  TTHH         
   CMP DL,'A'
   JB   WRONG2         
   CMP DL,'F'
   JBE   TTHH 
   JMP WRONG2 
;===================
HVVE:
   MOV SI,2
   MOV CL,4
   MOV DL,BUF1[SI]
   CMP DL,0DH
   JNE  SDFR
HVV:
   ENTER
   LEA DX,ALPH1
   MOV AH,9H
   INT 21H
   JMP FAR PTR ERR5
SDFR:
   CMP DL,39H
   JA  TTT2
   SUB DL,30H
TTTT2:
   INC SI
   CMP BUF1[SI],0DH
   JE  II2
   ROL DL,CL
IO2:
   MOV AL,BUF1[SI]
   CMP AL,39H
   JA  QQ12
   SUB AL,30H
DQQ12:
   OR DL,AL
   INC SI
   CMP BUF1[SI],0DH
   JE  II2
   JMP IV2
TTT2:
  SUB DL,37H
  JMP TTTT2
QQ12:
  SUB AL,37H
  JMP DQQ12
IV2:
  ROL DX,CL
  JMP IO2
;============
II2:
   MOV BUF1[SI],'$'
   MOV CL,4
   MOV SI,0
   XOR AX,AX
   MOV AX,BX
   MUL DX                ;相乘
   JMP TT2
;===============
AAA12:
  JMP FAR PTR AAA22 ;跳转
;===============
TT2:
   ROL DX,CL
   MOV X,DX
   AND DX,0FH  
   CMP DX,9H
   JA  DSS2
   ADD DX,30H
   JMP FF2
DSS2:
   ADD DX,37H
FF2:
   MOV BUF0A[SI],DL
   MOV DX,X
   INC SI
   CMP SI,4H
   JE  TT2A
   JMP TT2
TT2A:
   ROL AX,CL
   MOV X,AX
   AND AX,0FH  
   CMP AX,9H
   JA  DSSA2
   ADD AX,30H
   JMP FFA2
;================跳转
AAA42:
   JMP FAR PTR AAA12
;=================
DSSA2:
   ADD AX,37H
FFA2:
   MOV BUF0A[SI],AL
   MOV AX,X
   INC SI
   CMP SI,8H
   JE  EXIT2
   JMP TT2A
EXIT2:
   MOV BUF0A[SI],'$'
   ENTER
   LEA DX,BUF+2
   MOV AH,9H
   INT 21H
   MOV DL,'*'
   MOV AH,2H
   INT 21H
   LEA DX,BUF1+2
   MOV AH,9H
   INT 21H
   MOV DL,'='
   MOV AH,2H
   INT 21H
   LEA DX,BUF0A
   MOV AH,9H
   INT 21H
ERR5:
   ENTER
   LEA DX,ALPH         ;========判断是否继续
   MOV AH,9H
   INT 21H 
   ENTER
   MOV AH,1H
   INT 21H
   CMP AL,'Y'
   JE  FAR PTR AAA42
   CMP AL,'y'
   JE  FAR PTR AAA42
 RET
MULTI ENDP
;======================除法运算
DIVIS PROC FAR
CON4:
   CLSA 
   ENTER
   CLS
   MOV SI,0
   MOV DI,0
   LEA DX,ALPH2
   MOV AH,9H
   INT 21H
   ENTER
   XOR DX,DX
   MOV AL,0CH    ;清除键盘缓冲区
   INT 21H
;=================
   OUTPUT BUF2
   LEA DX,BUF    ;输入被除数
   MOV AH,0AH
   INT 21H
   ENTER
;------------
   OUTPUT BUF3
   LEA DX,BUF1   ;输入除数
   MOV AH,0AH
   INT 21H
   CLS
;=====================
   MOV SI,2
   MOV BL,BUF[SI]          ;错误检测
   DEC SI
   CMP BL,0DH
   JE  HHDIV
TTVCC:
   INC SI
   MOV BL,BUF[SI]
   CMP BL,0DH
   JE  HDIV
   CMP BL,'0'
   JB  WRONGC           
   CMP BL,'9'
   JBE  TTVCC         
   CMP BL,'A'
   JB   WRONGC         
   CMP BL,'F'
   JBE   TTVCC
   JMP WRONGC 
;====================
HDIV:
   MOV SI,2
   MOV CL,4
   MOV BL,BUF[SI]
   CMP BL,0DH
   JNE  SDFW
HHDIV:
   ENTER
   LEA DX,ALPH1
   MOV AH,9H
   INT 21H
   JMP FAR PTR ERR6
SDFW:
   CMP BL,39H
   JA  TA4
   SUB BL,30H
TTW4:
   INC SI
   CMP BUF[SI],0DH
   JE  TN4
   ROL BL,CL
TER4:
   MOV AL,BUF[SI]
   CMP AL,39H
   JA  QQ4
   SUB AL,30H
DQQ4:
    OR BX,AX
    INC SI
    CMP BUF[SI],0DH
    JE  TN4
    JMP TN14
TA4:
  SUB BL,37H
  JMP TTW4
QQ4:
  SUB AL,37H
  JMP DQQ4
TN14:
  ROL BX,CL
  JMP TER4
;===========
WRONGC:
  WRONG1 ERR6
;========
AAA24:
   ENTER
   MOV AL,0CH ;清除键盘缓冲区
   INT 21H
   JMP FAR PTR CON4 ;================
;=========================
TN4:
   MOV BUF[SI],'$'
;============================检测除数
   MOV SI,2
   MOV DL,BUF1[SI]          ;错误检测
   DEC SI
   CMP DL,0DH
   JE  VCVC
TTVC:
   INC SI
   MOV DL,BUF1[SI]
   CMP DL,0DH
   JE  VXX
   CMP DL,'0'
   JB  WRONGC           
   CMP DL,'9'
   JBE  TTVC         
   CMP DL,'A'
   JB   WRONGC         
   CMP DL,'F'
   JBE   TTVC 
   JMP WRONGC 
;====================
VXX:
   MOV SI,2
   MOV CL,4
   MOV DL,BUF1[SI]
   CMP DL,0DH
   JNE  SDFS
VCVC:
  ENTER
   LEA DX,ALPH1
   MOV AH,9H
   INT 21H
   JMP FAR PTR ERR6
SDFS:
   CMP DL,39H
   JA  TTT4
   SUB DL,30H
TTTT4:
   INC SI
   CMP BUF1[SI],0DH
   JE  II4
   ROL DL,CL
IO4:
   MOV AL,BUF1[SI]
   CMP AL,39H
   JA  QQ14
   SUB AL,30H
DQQ14:
   OR DL,AL
   INC SI
   CMP BUF1[SI],0DH
   JE  II4
   JMP IV4
TTT4:
  SUB DL,37H
  JMP TTTT4
QQ14:
  SUB AL,37H
  JMP DQQ14
IV4:
  ROL DX,CL
  JMP IO4
;============
II4:
   MOV BUF1[SI],'$'
   MOV CL,4
   MOV SI,0
   XOR AX,AX
   MOV AX,BX
   MOV BX,DX
   XOR DX,DX
   DIV BX         ;++++++++++++++++++++++
   JMP TT4
AAA14:
  JMP FAR PTR AAA24 ;==================
;===============
TT4:
   ROL AX,CL
   MOV X,AX
   AND AX,0FH  
   CMP AX,9H
   JA  DSS4
   ADD AX,30H
   JMP FF4
DSS4:
   ADD AX,37H
FF4:
   MOV BUF0A[SI],AL
   MOV AX,X
   INC SI
   CMP SI,4H
   JE  TT24
   JMP TT4
TT24:
   CMP DX,0H
   JE  EXIT4
   MOV BUF0A[SI],2DH
   INC SI
TT34:
   ROL DX,CL
   MOV X,DX
   AND DX,0FH  
   CMP DX,9H
   JA  DSSA4
   ADD DX,30H
   JMP FFA4
;================CHARU
AAA44:
   JMP FAR PTR AAA14
;=================
DSSA4:
   ADD DX,37H
FFA4:
   MOV BUF0A[SI],DL
   MOV DX,X
   INC SI
   CMP SI,9H
   JE  EXIT4
   JMP TT34
EXIT4:
   MOV BUF0A[SI],'$'
   ENTER
   LEA DX,BUF+2
   MOV AH,9H
   INT 21H
   MOV DL,'/'
   MOV AH,2H
   INT 21H
   LEA DX,BUF1+2
   MOV AH,9H
   INT 21H
   MOV DL,'='
   MOV AH,2H
   INT 21H
   LEA DX,BUF0A
   MOV AH,9H
   INT 21H
ERR6:
   ENTER
   LEA DX,ALPH         ;========判断是否继续
   MOV AH,9H
   INT 21H 
   ENTER
   MOV AH,1H
   INT 21H
   CMP AL,'Y'
   JE  FAR PTR AAA44
   CMP AL,'y'
   JE  FAR PTR AAA44
  RET 
DIVIS ENDP
;===================主界面选择区
START:
  MOV AX,DATA
  MOV DS,AX
STAR:
  CLSA
  OUTPUT BUF00
  ENTER
  OUTPUT BUF01
  ENTER
  OUTPUT BUF02
  ENTER
  OUTPUT BUF03
  ENTER
  OUTPUT BUF04
  ENTER
  OUTPUT BUF05
  ENTER 
  OUTPUT BUF06
  ENTER 
  OUTPUT BUF07
  ENTER 
  OUTPUT BUF08
  ENTER 
  OUTPUT BUF09
  ENTER
  OUTPUT BUF10
  ENTER
  MOV AH,1H
  INT 21H
  CMP AL,'1'
  JNE ATOB
  CALL ADDNUM
  CLSA
  JMP STAR
ATOB:
  CMP AL,'2'
  JNE BTOC
  CALL JIAN 
  CLSA
  JMP STAR
BTOC:
  CMP AL,'3'
  JNE CTOD
  CALL MULTI
  CLSA
  JMP STAR 
CTOD:
  CMP AL,'4'
  JNE DTOE
  CALL DIVIS
  CLSA
  JMP STAR  
DTOE:
  CMP AL,'5'
  JE EXIT1
  JMP STAR
EXIT1:
  MOV AH,4CH
  INT 21H
CODE ENDS
 END START  



   

⌨️ 快捷键说明

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