欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

汇编语言:实验10 根据材料编程—3.数值显示,编程,将data段中的数据以十进制形式显示出来

发布时间:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 汇编语言:实验10 根据材料编程—3.数值显示,编程,将data段中的数据以十进制形式显示出来 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

问题描述

编程,将data段中的数据以十进制的形式显示出来

data segmentdw 123,12666,1,8,3,38 data ends

实验效果


实验要求

子程序描述

名称:dtoc
功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符。
参数:(ax)=word型数据,ds:si指向字符串的首地址
返回:无

实验代码

实现代码中dtoc 有返回值 ,修改si的值,si指向字符串的首地址,在显示show_str才有参数进行传递

;实验10 问题3 数值显示 ;编程,将data段中的数据以十进制的形式显示出来。 assume cs:codedata segmentdw 123,12666,1,8,3,38 data ends ;存放word型数据对应的ASCII码,word型数据最大为65536 对应的10进制只有5位 ;字符串 0 结尾占一位,所以string 段 用6位就够了 string segmentdb 6 dup (0) string endscode segment start:mov cx,6mov ax,datamov ds,axmov bx,0mov dh,8s:;下面循环中有更改cs,ds 故将其放入临时区push cxpush dsmov ax,ds:[bx]call dtocmov dl,3mov cl,2mov ax,stringmov ds,axcall show_strinc dhadd bx,2pop dspop cxloop smov ax,4c00hint 21h;名称:dtoc;功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符。;参数:(ax)=word型数据,ds:si指向字符串的首地址;返回:si ,修改si的值,si指向字符串的首地址dtoc:push axpush bxpush cxpush dxpush espush dimov bx,stringmov es,bxmov di,5mov si,diget_num:;用32位除 16位 ax存商 dx余数mov dx,0mov bx,10div bx;将余数转ASCII码值add dx,48 mov es:[di],dldec dimov cl,almov ch,0jcxz dtoc_okmov si,dijmp short get_numdtoc_ok:pop dipop espop dxpop cxpop bxpop axret;名称:show_str;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。;参数:(dh)行号(取值范围0~24),(dl)=列号(取值范围0~79),; (cl)=颜色,ds:si指向字符串的首地址;返回:无show_str:push axpush bxpush cxpush dxpush espush sipush di;显存起始位置,目的地址mov ax,0b800Hmov es,ax;确定 di = dh*160+dl*2,ax 、bx、di 没有用户数据被占用 可以进行使用;mov di,(dh)*160+(dl)*2mov al,dhmov ah,0mov bl,160mul blmov di,axmov al,dlmov ah,0mov bl,2mul bladd di,axmov dl,cl ;存放颜色str_set:mov cl,ds:[si]mov ch,0jcxz show_ok ;控制结束条件mov ax,ds:[si]mov es:[di],ax ;设置字母mov es:[di+1],dl;设置颜色add di,2inc sijmp short str_setshow_ok:pop dipop sipop espop dxpop cxpop bxpop axret code ends end start

总结

以上是生活随笔为你收集整理的汇编语言:实验10 根据材料编程—3.数值显示,编程,将data段中的数据以十进制形式显示出来的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。