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

📄 lab4-2.asm

📁 用java实现类的继承关系
💻 ASM
字号:
;实验4    第二题   显示月份名   
;quit the program using ctrl+c

.model small

.data                                         ; define data segment
    branchMonth dw month1
                dw month2
                dw month3
                dw month4 
                dw month5
                dw month6
                dw month7
                dw month8
                dw month9
                dw month10
                dw month11
                dw month12
   remindString db 0ah,0dh,'Please input a month number:',0ah,0dh,'$'
   wrong db 0ah,0dh,'error!$'
   monthBuffer db 3,?,3 dup(?)
   m1 db 0ah,0dh,'JAN','$'
   m2 db 0ah,0dh,'FEB','$'
   m3 db 0ah,0dh,'MAR','$'
   m4 db 0ah,0dh,'APR','$'
   m5 db 0ah,0dh,'MAY','$'
   m6 db 0ah,0dh,'JUN','$'
   m7 db 0ah,0dh,'JUL','$'
   m8 db 0ah,0dh,'OUG','$'
   m9 db 0ah,0dh,'SEP','$'
   m10 db 0ah,0dh,'OCT','$'
   m11 db 0ah,0dh,'NOV','$'
   m12 db 0ah,0dh,'DEC','$'

.code                                                 ; define code segment

.startup                                               ;starting execution address
   mov ax,@data
   mov ds,ax

;****************************************************************************
;program goes here
  
again:

   mov dx,offset remindString                          ;      output the string 
   mov ah,09h
   int 21h
  
   mov dx,offset monthBuffer                           ; input the month and store it to  monthBuffer
   mov ah,0ah
   int 21h
   
   mov bl,monthBuffer+1                                ;length of the monthBuffer
   cmp bl,1                                            ;judge length =1?
   je oneNumber
   jne twoNumber

;**********************************************************************************
oneNumber:                                             ;month 1-9
   mov al,monthBuffer+2
   cmp al,31h
   jl wrongNumber
   cmp al,39h
   jg wrongNumber

   mov si,0
   cmp al,31h
   je jump
   add si,2
   cmp al,32h
   je jump
   add si,2
   cmp al,33h
   je jump
   add si,2
   cmp al,34h
   je jump
   add si,2
   cmp al,35h
   je jump
   add si,2
   cmp al,36h   
   je jump
   add si,2
   cmp al,37h  
   je jump
  add si ,2
   cmp al,38h  
   je jump
   add si,2
   cmp al,39h
   
  
jump:
   jmp branchMonth[si]
 ;*********************************************************************************************
  
twoNumber:                                                    ;month 10-12
   mov al, monthBuffer+2                                       
   cmp al, 31h
   jne wrongNumber
   mov al,monthBuffer+3
   cmp al, 30h
   jl wrongNumber
   cmp al, 32h
   jg wrongNumber

   mov si,18
   cmp al,30h
   je jump1
   add si,2
   cmp al,31h
   je jump1
   cmp al,32h
   add si,2
jump1:
   jmp branchMonth[si]
   
;***************************************************label goes here

month1:
   lea dx,m1
   mov ah ,09h
   int 21h
   jmp again

month2:
    lea dx,m2
    mov ah,09h
    int 21h
   jmp again
month3:
    lea dx,m3
    mov ah,09h
    int 21h
   jmp again
month4:
    lea dx,m4
    mov ah,09h
    int 21h
   jmp again
month5:
    lea dx,m5
    mov ah,09h
    int 21h
   jmp again
month6:
    lea dx,m6
    mov ah,09h
    int 21h
   jmp again
month7:
    lea dx,m7
    mov ah,09h
    int 21h
   jmp again
month8:
    lea dx,m8
    mov ah,09h
    int 21h
   jmp again
month9:
    lea dx,m9
    mov ah,09h
    int 21h
   jmp again
month10:
    lea dx,m10
    mov ah,09h
    int 21h
   jmp again
month11:
   lea dx,m11
    mov ah,09h
    int 21h
   jmp again
month12:
    lea dx,m12
    mov ah,09h
    int 21h
   jmp again
;********************************************************** input num is wrong 
wrongNumber:
   lea dx,wrong
   mov ah,09h
   int 21h
   jmp again

.exit 0                                     
end

⌨️ 快捷键说明

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