想了一种可能比较繁琐的方法吧目前学到的知识都用上了来实现当前题目
代码如下
assume cs:code
data segment
db 12,30,10101001b,10 ;显示模式的行,列,字体和背景颜色,数据进制
db 28 dup(0) ;转换后数据的缓存区域
dw 123,12666,1,8,3,38,0 ;待处理后显示的数据
data ends
stack segment
db 32 dup(0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax ;初始化栈段和地址段
mov sp,32
mov di,ds:[3] ;转换为十进制
mov si,4
call dtoc
mov si,4
mov dh,ds:[0] ;字符串输出行位置
mov dl,ds:[1] ;字符串输出列位置
mov cl,ds:[2] ;显示模式(8位)
call show_str ;调用子程序 show_str显示转换后的字符串
mov ax,4c00h
int 21h
dtoc: ;子程序将内存单元中的数据转换为十进制
mov bx,32
dch: ;外层循环操作字型数据
mov ax,[bx]
mov cx,ax
jcxz over ;判定是否循环到结尾终止符号设置为'0'
dsn:
mov cx,ax ;判断数据是否转换完毕用求余方法,当求余结束时商为0
jcxz after ;一个数据转换结束跳入后续处理
div di
add dx,30h ;添加30h符合ASCII码的十进制显示