【汇编语言】王爽第三版----------------实验10-3
2018-02-13 17:46
399 查看
assume cs:code,ds:data data segment db 10 dup(0) data ends code segment start: mov ax,12666 mov bx,data mov ds,bx mov si,0 call dtoc mov dh,8 mov dl,3 mov cl,02h call show_str mov ax,4c00H int 21H dtoc: push dx push cx push ax push si push bx mov bx,0 ;bx在子程序中用来存放位数,用栈来临时存放修改后的字符 dtoc00: mov cx,10d ;d表示十进制 mov dx,0 div cx ;除以10 mov cx,ax ;得到的商赋给cx jcxz dtoc01 ;当前商为0则调到s2 add dx,30H ;将余数加上30H得到相应的ASCII码 push dx inc bx jmp short dtoc00 dtoc01: ;当商为0时,余数为个位 add dx,30H push dx inc bx ;再进行一次栈操作(补充当商为0而余数不为0时的情况) mov cx,bx mov si,0 dtoc02: ;s3实现将栈中的数据依次出栈放到制定内存中 pop ax mov [si],al inc si loop dtoc02 dtoc03: pop bx pop si pop ax pop cx pop dx ret show_str: ;显示字符串的子程序(定义开始) push cx push si mov al,0a0H ;每行为160字节 a0H=160 dec dh ;行号在显存中下标从0开始,所以减1 mul dh ;相当于从(n-1)*0a0H个Byte单元开始 mov bx,ax ;定位好的位置偏移地址存放在bx里面(行) mov al,2 ;每个字符占两个字节 mul dl ;定位列,结果ax存放的是定位好的列的位置 sub ax,2 ;列号在显存中下标从0开始,又因为偶字节存放字符,所以减2 add bx,ax ;此时bx存放的是行与列的偏移地址 mov ax,0b800H mov es,ax mov di,0 ;指向显存的偏移地址 mov al,cl ;cl是存放颜色的参数,这时候al存放颜色了 mov ch,0 ;下边cx存放的是每次准备处理的字符 show_str00: mov cl,ds:[si] ;ds:[si]指向'Weclome to masm!' jcxz show_str01 mov es:[bx+di],cl ;偶数地址存放字符 mov es:[bx+di+1],al ;奇数地址存放颜色属性 inc si add di,2 jmp short show_str00 show_str01: pop si pop cx ret code ends end start
相关文章推荐
- 汇编语言 第三版 王爽 实验10-1 编写子程序 之 显示字符串
- 汇编语言 第三版 王爽 实验10-2 编写子程序 之 解决除法溢出问题 divdw
- 汇编语言 第三版 王爽 实验10 显示字符串 show_str 独立完成
- 王爽 汇编语言 第三版 实验10 编写子程序
- 【汇编语言】王爽第三版 - 实验11
- 王爽 汇编语言 第三版 实验12 编写0号中断的处理程序
- 汇编语言(王爽 第三版)实验十六
- 汇编语言(王爽)---实验10
- 汇编语言 第三版 王爽 实验四
- 汇编语言 王爽(第三版) 实验3 编程、编译、连接、跟踪
- 汇编语言(王爽第三版)实验9根据材料编程
- 王爽 汇编语言 第三版 实验15 安装新的int 9中断例程
- 汇编语言 王爽(第三版)实验十六
- 王爽-汇编语言第三版实验7
- 汇编语言(王爽 第三版)实验五
- 汇编语言(王爽 第三版)实验七
- 汇编语言 王爽(第三版) 实验七
- 汇编语言(王爽)--实验10编写子程序
- 【汇编语言】王爽第三版----------------实验7
- 王爽 汇编语言 第三版 实验14 访问 CMOS RAM