马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 kikiatw 于 2019-10-11 11:02 编辑
寫完10-1, 10-2後, 改寫10-3
不過我發現直接調用10-1或是10-2的程序, 都無法正確使用
這代表原先的10-1, 10-2寫的不是很好..ASSUME cs:code, ss:stack
stack segment
DB 30H DUP (?)
stack ends
code segment
MAIN:
mov ax,stack
mov ss,ax
mov ds,ax
mov sp,30H
mov ax,33456 ;num
mov dx,32345 ;num
call dtoc
mov si,sp
mov dh,15 ;row
mov dl,20 ;col
mov cx,10011110B;color
call show
mov ax,4c00H
int 21H
dtoc:
pop bp ;save return ip
mov bx,0
push bx ; 0 end
s1: mov cx,0aH
push ax ;保存低位
mov ax,dx ;將高位給低位
mov dx,0 ;高位設為0
div cx ;16bit除數, 商為ax, 餘為dx
mov bx,ax ;商暫時放bx
pop ax ;ax=原本低位, dx=高位餘數
div cx ;16bit除數, 商為ax, 餘為dx
add dx,30H ;餘數就是我們要的十進位數值, 將他轉為ASCII
push dx ;然後推入棧儲存
mov dx,bx ;34行的商放回dx當高位
mov cx,ax ;若是低位餘數為0了代表終止
jcxz s2
jmp short s1
s2: push bp
ret
show:
mov ax,0b800H
mov es,ax
mov al,dh
mov ah,160
mul ah
mov dh,0
add ax,dx
add ax,dx
mov di,ax ;LOCATION
mov ah,cl ;COLOR TRANSFER
s3: mov al,[si]
mov cl,[si]
jcxz s4
mov es:[di],ax
add di,2
add si,2
jmp s3
s4: ret
code ENDS
END MAIN
|