汇编语言:实验10 根据材料编程—3.数值显示,编程,将data段中的数据以十进制形式显示出来
生活随笔
收集整理的这篇文章主要介绍了
汇编语言:实验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段中的数据以十进制形式显示出来的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: day 05总结(格式化输出的三种方式/
- 下一篇: qss 的使用