汇编高手进(判断闰年)

来源:百度知道 编辑:UC知道 时间:2024/06/08 02:10:44
请问哪儿错了??
stack segment stack
dw 256 dup(?)
stack ends

data1 segment
year dw 2000
yes db "yes!",13,10,'$'
no db "no!",13,10,'$'
data1 ends

code1 segment
assume cs:code1,ds:data1
start:
mov ax,data1
mov ds,ax

mov ah,0ah
int 21h
mov year,dx

mov dx,offset year
mov ah,9
int 21h

mov dx,0
mov ax,year
mov bx,400
div bx
cmp dx,0
je _yes

mov dx,0
mov ax,year
mov bx,100
div bx
cmp dx,0
je _no

mov dx,0
mov ax,year
mov bx,4
div bx
cmp dx,0
je _yes

_no: mov dx,offset no
jmp show
_yes:mov dx,offset yes

show:mov ah,9
int 21h
mov ax,4c00h
int 21h
code1 ends
end start
怎么没人进啊???????

INT 21H 的0AH号功能输入的是字符串,字符用作数值处理是不行的.
建议将字符串转换成数进行判断.
试试下面这个程序:
stack segment stack
dw 256 dup(?)
stack ends

data1 segment
year db 5,?,6 dup(0)
org 10h
var dw 0
yes db "yes!",13,10,'$'
no db "no!",13,10,'$'
data1 ends

code1 segment
assume cs:code1,ds:data1
start:mov ax,data1
mov ds,ax

lea dx,year
mov ah,0ah
int 21h ;INPUT TO BUFFER

lea si,year+2
mov ch,0
mov cl,year+1 ;MAXSIZE MOVE TO CL,INITIALIZATION CX=4
up:
cmp cl,4
je jump4
cmp cl,3
je jump3
cmp cl,2
je jump2
cmp cl,1
mov al,[si]
sub al,30h
mov bh,1
mul bh
add var,ax
inc si
jmp jump

jump2:mov al,[si]
sub al,30h
mov bh,10
mul bh
add var,ax
inc si
jmp jump