汇编语言打印一个十进制数
时间: 2024-03-21 19:39:41 浏览: 58
汇编语言显示十进制数
要在汇编语言中打印一个十进制数,需要将该数转换为十进制字符串并调用 DOS 中断服务来实现。下面是一个示例程序,假设要打印的十进制数为 `1234`:
```
.model small
.stack 100h
.data
buffer db 10 dup ('$') ; 存储输出结果的缓冲区
.code
main proc
mov ax, @data
mov ds, ax
; 将十进制数转换为字符串
mov ax, 1234
call word2dec
; 调用 DOS 中断服务 21h,输出字符串
mov ah, 09h
mov dx, offset buffer
int 21h
; 程序结束
mov ah, 4ch
int 21h
main endp
; word2dec 过程将一个字(16 位)转换为十进制字符串
; 输入:ax - 要转换的字
; 输出:buffer - 转换后的十进制字符串
word2dec proc near
push ax ; 保存 ax 到栈中
mov cx, 0 ; 初始化计数器
mov bx, 10 ; bx = 10
word2dec_loop:
xor dx, dx ; dx = 0
div bx ; ax = ax / bx, dx = ax % bx
add dl, '0' ; 将余数转换为 ASCII 码
mov [buffer+cx], dl ; 存储余数到缓冲区
inc cx ; 计数器加 1
cmp ax, 0 ; 如果 ax 不为 0,继续循环
jne word2dec_loop
pop ax ; 恢复 ax
ret
word2dec endp
end main
```
以上程序将十进制数 `1234` 转换为字符串,存储到 `buffer` 缓冲区中,然后调用 DOS 中断服务 21h 的 09h 功能号,将该字符串输出到屏幕上。
请注意,在汇编语言中,数据段中的变量名需要以 `label` 的形式定义,代码段中的标签也需要以 `label` 的形式定义。此外,本程序使用了 DOS 中断服务 21h,需要在 DOS 环境下运行才能正常输出结果。
阅读全文