|
主题 : : 我写的实验10的子程序,大家看看,找找不足 [待解决] |
回复[ 6次 ]
点击[ 323次 ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-14 19:20 |
第一个是显示子程序
show_str:push dx
push es
push ax
push si
push di
push cx
mov al,dh
mov dh,160
mul dh
mov dh,0
add dx,dx
add ax,dx
mov di,ax
mov ax,0b800h
mov es,ax
mov al,cl
s:mov cl,[si]
mov ch,0
jcxz ok
mov byte ptr es:[di],cl
mov byte ptr es:[di+1],al
inc si
add di,2
jmp short s
ok:pop cx
pop di
pop si
pop ax
pop dx
pop es
ret
第二个是解决除法益处的
divdw:push bx
mov bx,ax
mov ax,dx
mov dx,0
div cx
push ax
mov ax,bx
div cx
mov cx,dx
pop dx
pop bx
ret
第三个是数值显示的问题
assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start:mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc:push cx
push dx
push si
mov dx,0
dtoc_s:mov cx,10
call divdw
jcxz dtoc_ok
add cx,30H
push cx
inc si
jmp short dtoc_s
dtoc_ok:mov cx,si
mov si,0
dtoc_s1:pop [si]
inc si
loop dtoc_s1
pop si
pop dx
pop cx
ret
divdw:push bx
mov bx,ax
mov ax,dx
mov dx,0
div cx
push ax
mov ax,bx
div cx
mov cx,dx
pop dx
pop bx
ret
show_str:push dx
push es
push ax
push si
push di
push cx
mov al,dh
mov dh,160
mul dh
mov dh,0
add dx,dx
add ax,dx
mov di,ax
mov ax,0b800h
mov es,ax
mov al,cl
show_str_s:mov cl,[si]
mov ch,0
jcxz show_str_ok
mov es:[di],cl
mov es:[di+1],al
inc si
add di,2
jmp short show_str_s
show_str_ok:pop cx
pop di
pop si
pop ax
pop dx
pop es
ret
code ends
end start
大家找找我的不足 | | |