8、王爽《汇编语言》笔记_子程序一

来源:互联网 发布:js 字符串数组排序 编辑:程序博客网 时间:2024/05/22 04:33

1、显示字符串: show_str

;名称:show_str;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。;参数:(dh)=行号(取值范围0~24);;      (dl)=列号(取值范围0~79);;      (cl)=颜色;;      ds:si指向字符串的首地址。;返回:无。show_str:     push ax; 保护数据     push bx     push es     push si     mov ax,0b800h; 显存基址     mov es,ax     mov ax,160; 每行所占的字节数     mul dh; 行数偏移     mov bx,ax;bx=160*dh     mov ax,2; 每行位置偏移     mul dl        ;ax=dl*2     add bx,ax     ;mov bx,(160*dh+dl*2)设置es:bx指向显存首地址     mov al,cl     ;把颜色cl赋值al     mov cl,0; 清零show0:     mov ch,[si]; 获取数据     jcxz show1    ;(ds:si)=0时,转到show1执行         mov es:[bx],ch; 写入显存     mov es:[bx].1,al; 写入颜色     inc si        ;ds:si指向下一个字符地址     add bx,2      ;es:bx指向下一个显存地址     jmp show0show1:; 结束     pop si; 取出保存的数据     pop es     pop bx     pop ax     ret
2、将数据转化为字符串:dtoc

;名称:dtoc;功能:将word型数据转变为表示十进制的字符串,字符串以0为结尾符。;参数:(ax)=word型数据;;      ds:si指向字符串首地址。;返回:无。dtoc:push ax; 保存数据     push bx     push cx     push dx     push si     push di     mov di,0d10: mov dx,0      ;设置被除数高位为0     mov bx,10     ;除数为10     div bx     add dx,30h    ;ax/10的余数+30h,转为字符     push dx       ;字符入栈     inc di       ;记录字符个数     mov cx,ax     jcxz d11      ;当ax/10的商=0时,转到d11执行     jmp d10d11: mov cx,did12: pop dx        ;字符出栈     mov [si],dl     inc si        ;ds:si指向下一单元     loop d12     mov dl,0     mov [si],dl   ;设置结尾符0     pop si     pop di     pop dx     pop cx     pop bx     pop ax     ret

3、将字符串小写字母变为大写

;名称:letterc;功能:将以0结尾的字符中的小写字母转变成大写字母;参数:ds:si指向字符串首地址letterc:push silet: cmp byte ptr [si],0    ;和0进行比较     je let0                ;如果等于0则转到let0,结束     cmp byte ptr [si],61h  ;和61h进行比较     jb let1                ;如果低于60h则转到let1,继续循环     cmp byte ptr [si],86h  ;和86h进行比较     ja let1                ;如果高于86h则转到let1,继续循环     and byte ptr [si],11011111b ;ASCII码的第5位置为0,转为大写let1:     inc si     jmp letlet0:     pop si     ret

4、

原创粉丝点击