汇编语言:实验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 的使用