3.2 请用子程序结构编写如下程序:从键盘输入一个二位十进制数的月分数(01-12),然后显示出相应的英文缩写名。
data SEGMENT
january db 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec$'
prompt db 'Please input month:$'
data ENDS
code SEGMENT
ASSUME CS:code,DS:data ;段分配伪指令
start:
mov ax,data
mov ds,ax
lea dx,prompt ;打印提示
mov ah,9h
int 21h
mov dx,0AH ;打印回车
mov AH,02H
int 21H
mov ah,1
int 21h
mov cl,al
sub cl,30h
mov al,10
MUL cl
mov cx,ax
mov ah,1
int 21h
mov bl,al
sub bl,30h
add bx,cx
Disp:
mov dx,0AH ;打印回车
mov AH,02H
int 21H
lea dx,january ;打印提示
mov si,dx
dec bx
add bx,bx
add bx,bx
add si,bx
mov dl,[si]
mov ah,2h
int 21h
inc si
mov dl,[si]
mov ah,2h
int 21h
inc si
mov dl,[si]
mov ah,2h
int 21h
exit:
MOV AX,4C00H
INT 21H
code ENDS
END start
用子程序结构编写
data SEGMENT
january db 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec$'
prompt db 'Please input month:$'
data ENDS
code SEGMENT
ASSUME CS:code,DS:data ;段分配伪指令
main proc far
mov ax,data
mov ds,ax
lea dx,prompt ;打印提示
mov ah,9h
int 21h
mov dx,0AH ;打印回车
mov AH,02H
int 21H
mov ah,1
int 21h
mov cl,al
sub cl,30h
mov al,10
MUL cl
mov cx,ax
mov ah,1
int 21h
mov bl,al
sub bl,30h
add bx,cx
call Disp
exit:
MOV AX,4C00H
INT 21H
main endp
Disp proc
mov dx,0AH ;打印回车
mov AH,02H
int 21H
lea dx,january ;打印提示
mov si,dx
dec bx
add bx,bx
add bx,bx
add si,bx
mov dl,[si]
mov ah,2h
int 21h
inc si
mov dl,[si]
mov ah,2h
int 21h
inc si
mov dl,[si]
mov ah,2h
int 21h
ret
Disp endp
code ENDS
END main