主题:菜鸟求助
求各路高手 给这个小程序 加一下注释 以便小弟看懂
data segment
num dw 64h
max dw 3e8h
sec db 3 dup(?)
data ends
code segment
main proc far
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
again:
mov ax,num
push ax
mov ax,0
push ax
call checkit
pop ax
cmp ax,0
je not_match
call printit
not_match:
pop ax
inc ax
mov num,ax
cmp ax,max
je exit
jmp again
exit:
mov ax,4c00h
int 21h
main endp
checkit proc
push bp
mov bp,sp
mov ax,[bp+6]
mov bl,100
div bl
mov sec,al
xchg al,ah
xor ah,ah
mov bl,10
div bl
mov sec+1,al
mov sec+2,ah
xor cx,cx
mov al,sec
mov ah,0
mov bx,ax
mul bx
mul bx
mov cx,ax
mov al,sec+1
mov ah,0
mov bx,ax
mul bx
mul bx
add ax,cx
mov cx,ax
mov al,sec+2
mov ah,0
mov bx,ax
mul bx
mul bx
add ax,cx
mov bx,ax
mov ax,[bp+6]
cmp ax,bx
jne no
mov ax,0ffffh
mov [bp+4],ax
no:
pop bp
ret
checkit endp
printit proc
mov al,sec
or al,30h
mov dl,al
mov ah,2
int 21h
mov al,sec+1
or al,30h
mov dl,al
mov ah,2
int 21h
mov al,sec+2
or al,30h
mov dl,al
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
printit endp
code ends
end start
[em18][em18][em18]
data segment
num dw 64h
max dw 3e8h
sec db 3 dup(?)
data ends
code segment
main proc far
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
again:
mov ax,num
push ax
mov ax,0
push ax
call checkit
pop ax
cmp ax,0
je not_match
call printit
not_match:
pop ax
inc ax
mov num,ax
cmp ax,max
je exit
jmp again
exit:
mov ax,4c00h
int 21h
main endp
checkit proc
push bp
mov bp,sp
mov ax,[bp+6]
mov bl,100
div bl
mov sec,al
xchg al,ah
xor ah,ah
mov bl,10
div bl
mov sec+1,al
mov sec+2,ah
xor cx,cx
mov al,sec
mov ah,0
mov bx,ax
mul bx
mul bx
mov cx,ax
mov al,sec+1
mov ah,0
mov bx,ax
mul bx
mul bx
add ax,cx
mov cx,ax
mov al,sec+2
mov ah,0
mov bx,ax
mul bx
mul bx
add ax,cx
mov bx,ax
mov ax,[bp+6]
cmp ax,bx
jne no
mov ax,0ffffh
mov [bp+4],ax
no:
pop bp
ret
checkit endp
printit proc
mov al,sec
or al,30h
mov dl,al
mov ah,2
int 21h
mov al,sec+1
or al,30h
mov dl,al
mov ah,2
int 21h
mov al,sec+2
or al,30h
mov dl,al
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
printit endp
code ends
end start
[em18][em18][em18]