主题:我快崩溃了,高手来帮助我一下:
题目要求是:输入数字月份,显示对应月份的英文缩写
写得很乱,融合了其他东西
下面的程序代码,无论输入什么都显示输入错误,我是没有一点办法了,帮帮我啊
data segment
mon db ' jan feb mar apr may jun jul aug sep oct nov dec'
msg1 db 'please input a string:',13,10,10,'$'
msg2 db 'input error!try again...',13,10,10,'$'
buffer label byte
maxlen db 3
actlen db ?
string db 3 dup(?)
data ends
code segment
main proc far
assume cs:code,ds:data
start: ;初始化程序
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
shuru: ;开始输入月份编号
lea dx,msg1
mov ah,09h
int 21h
lea dx,buffer
mov ah,0ah
int 21h
cmp actlen,0
jmp shurue
;判断输入是否合法
lea di,string
cmp actlen,2
je da10
mov ax,(di)
jmp jisuan
da10:
inc di
mov ax,(di)
add (ax),10
jmp jisuan
;计算偏移地址
jisuan:
sub cx,cx
sub si,si
mov cx,(ax)
xuanhuan: add si,05h
loop xuanhuan
;输出对应月份英文缩写
mov cx,05h
xuanhuan2: mov dl,mon[si]
inc si
mov ah,02h
int 21h
loop xuanhuan2
ret
;输入出错时
shurue: lea dx,msg2
mov ah,09h
int 21h
ret
jmp shuru
ret
main endp
code ends
end start
写得很乱,融合了其他东西
下面的程序代码,无论输入什么都显示输入错误,我是没有一点办法了,帮帮我啊
data segment
mon db ' jan feb mar apr may jun jul aug sep oct nov dec'
msg1 db 'please input a string:',13,10,10,'$'
msg2 db 'input error!try again...',13,10,10,'$'
buffer label byte
maxlen db 3
actlen db ?
string db 3 dup(?)
data ends
code segment
main proc far
assume cs:code,ds:data
start: ;初始化程序
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
shuru: ;开始输入月份编号
lea dx,msg1
mov ah,09h
int 21h
lea dx,buffer
mov ah,0ah
int 21h
cmp actlen,0
jmp shurue
;判断输入是否合法
lea di,string
cmp actlen,2
je da10
mov ax,(di)
jmp jisuan
da10:
inc di
mov ax,(di)
add (ax),10
jmp jisuan
;计算偏移地址
jisuan:
sub cx,cx
sub si,si
mov cx,(ax)
xuanhuan: add si,05h
loop xuanhuan
;输出对应月份英文缩写
mov cx,05h
xuanhuan2: mov dl,mon[si]
inc si
mov ah,02h
int 21h
loop xuanhuan2
ret
;输入出错时
shurue: lea dx,msg2
mov ah,09h
int 21h
ret
jmp shuru
ret
main endp
code ends
end start