assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start : mov ax,4240H;F4240H=1000000
mov dx,0FH
mov cx,0AH
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 ax;子程序中使用的寄存器入栈
push bx
push cx
push dx
push di
push si
mov di,0;计数器,记录余数的个数
s1: mov cx,10;除数
call divdw
inc di
add cx,30H;余数+30H转化为ASCII码
push cx
cmp dx,0
jne s1
cmp ax,0
jne s1
mov cx,di
p: pop ds:[si]
inc si
loop p
;由于show_str的需要,ds:di处的字符串以零作尾。
;mov byte ptr ds:[si],0这条语句有无皆可,因为最后一次入栈的时候高
实验10.3_数值显示拓展_dword型数转变为表示十进制数的字符串
最新推荐文章于 2022-03-09 17:15:40 发布
该博客介绍了如何使用汇编语言编写子程序dtoc,该程序能将dword型数值转换为十进制字符串,并以0作为结束符。文章通过一个实例展示了如何在屏幕上以绿色显示1000000的十进制形式,过程中调用了show_str和divdw子程序。博主强调了在实际编程中模块化的重要性,利用call和ret指令可以方便地构建功能独立的子程序来解决复杂问题。
摘要由CSDN通过智能技术生成