|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码如下:
- assume cs:code, ds:data, ss:stack
- data segment
- db 10 dup(0);存放处理好的十进制数据
- data ends
- stack segment
- dw 16 dup(0)
- stack ends
- code segment
- start: mov ax, 12666
- mov bx, data
- mov ds, bx
- mov bx, stack
- mov ss, bx
- mov sp, 32
- mov si, 0
- call dtoc
-
- mov dh, 8
- mov dl, 3
- mov cl, 2
- call show_str
-
- dtoc: push ax
- push bx
- push cx
- push dx
- push si
-
- mov bx, 0;用于分解时计数,表述位数
-
- fenjie:mov cx, 10
- mov dx, 0
- div cx
-
- mov cx, ax
- jcxz s2 ;商为0时停止分解
-
- add dx, 30H; 对应0~9的ASCII码
- push dx ;余数压入栈中暂存
- inc bx
-
- jmp short fenjie
- s2: add dx, 30H
- push dx
- inc bx
-
- mov si, 0
-
- mov cx, bx; 将栈中暂存的数据转移到数据段中
- s3: pop ax
- mov [si], al
- inc si
- loop s3
-
- pop si
- pop dx
- pop cx
- pop bx
- pop ax
-
- ret
- show_str: push cx
- push si
-
- mov ax, 0b800H
- mov es, ax
-
- mov ax, 160
- mul dh
- mov bx, ax
-
- mov ax, 2
- mul dl
- add bx, ax ;定位显示的初始位置
-
- mov al, cl ;用al来存放属性,cl用来判断
- mov ch, 0
-
- mov di, 0 ;指向显存
-
- s: mov cl, ds:[si]
- jcxz ok ;判断cx是否为0,不为0则继续执行,为0则跳转
-
- mov es:[bx+di], cl ;存放ASCII码
- mov es:[bx+di+1], al;存放属性
-
- inc si;指向要显示的下一个字母
- add di, 2
-
- jmp short s
-
- ok: pop si
- pop cx
-
- ret
- code ends
- end start
复制代码
mov dh, 8
mov dl, 3
mov cl, 2
call show_str
mov ax, 4c00h
int 21h
|
|