📄 lab4-2.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 + -