|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码 |
|