x86汇编--(七)高仿for循环嵌套打印字符串

来源:互联网 发布:社交网络结尾视频 编辑:程序博客网 时间:2024/06/05 21:56
;看书看到一个题目:编写一个子函数,打印8行3列的字符串,数据域已经给出;0 0写了几个小时的成果- - (╯-_-)╯╧╧ 晕死assume cs:codesg,ds:datasg,ss:stackdatasg segmentdb 'Welcome to masm! ',0datasg endsstack segmentdw 64 dup(0)stack endscodesg segmentstart:mov dh,8;行号mov dl,3;列数mov cl,2;绿色mov ax,datasgmov ds,axmov si,0;ds:si指向字符串的首地址mov ax,stackmov ss,axmov sp,128call show_strmov ax,4c00hint 21h;打印dh行dl列的字符串show_str:mov ax,0b800hmov es,ax;es定位显存mov bx,0;真正打印的位置mov ah,cl;低位存放颜色;控制行循环mov cx,0mov cl,dhrow:push cxpush bx;控制列循环mov cx,0mov cl,dlcol:push cxpush sicall print;打印字符串pop sipop cxloop col;循环打印一行pop bxadd bx,160;定位到下一行打印pop cxloop row;循环打印行ret;返回;打印字符串print:mov cl,[si]mov ch,0jcxz ok;判断当前字符是否到0,到了就停止这个打印mov al,[si]mov es:[bx],ax;写入显存显示inc siadd bx,2jmp short print;如果没打印完,就继续往后打印ok:retcodesg endsend start

0 0
原创粉丝点击