一段code的問題九九乘法表,請多多指教,謝謝大家
一段code的問題九九乘法表,請多多指教,謝謝大家
(一)這行在算十進位,但是我不知道他為什麼 能算出
xor ax,ax
mov al,z
mov bl,10
div bl ; ax / bl = al...ah
(二) 未什麼要or dl,dl 這個呢,自己對自己or部是一樣嗎
pri_dd:
or dl,dl
jnz pri_da
ret
(三) 這段用意為何呢?上段不是已經被xor ax,ax
AX已經被清成0為什麼還要 push ax pop ax呢?
sml0:
push ax
mov dl,al
call pri_dd
pop ax
mov dl,ah
code如下 謝謝
.model small
.386
.data ;
x db ?
y db ? ; x=被乘數 , y=乘數 , z=積
z db ?
.code
.startup
mov al,1
mov x,al ; x=1
mov cx,9
star2:
push cx
mov al,1
mov y,al ; y=1
call next_l
mov cx,9
star0:
push cx
mov al,x
mul y ; x*y => al
mov z,al
mov dl,x
call pri_da
mov dl,'*'
call pri_dl
mov dl,y
call pri_da
mov dl,'='
call pri_dl
xor ax,ax
mov ah,z
cmp ah,10 ; if z < 10 then jump
jb sml0
xor ax,ax
mov al,z
mov bl,10
div bl ; ax / bl = al...ah
sml0:
push ax
mov dl,al
call pri_dd
pop ax
mov dl,ah
call pri_da
call pri_dc
inc y
pop cx
loop star0
inc x
pop cx
loop star2
call next_l
.exit
next_l: mov dl,0dh ;回車換行
call pri_dl
mov dl,0ah
call pri_dl
ret
pri_dd:
or dl,dl
jnz pri_da
ret
pri_dc: mov dl,20h ;空格
jmp pri_dl
pri_da: add dl,30h
pri_dl: mov ah,02
int 21h
ret
mov ax,4ch
int 21
.stack
end