汇编语言子函数——显示字符串
来源:互联网 发布:多人通话软件 编辑:程序博客网 时间:2024/06/05 15:17
在汇编语言中,字符串的显示是很重要的,也是经常要被调用的,所以最好写一个通用的显示子函数,下面我提供一个自己写的显示的子函数
assume cs:code, ds:datadata segmentdb 'ok!', 0data endscode segmentstart:mov dh, 8 ;行数mov dl, 3 ;列数mov cl, 2 ;颜色mov ax, datamov ds, axcall show_str ;跳转到子函数mov ax, 4C00Hint 21Hshow_str:push axpush cxpush sipush bxpush espush dx ;用栈将行数和列数保存起来mov bp, sp ;将栈指针给bp,在没有说明bp作为内存什么段地址的偏移地址时,默认是在栈段中mov al, [bp + 1] ;[bp+1]是行数mov ah, 0mov bx, 160 ;这里的160是每一行的最大字节数mul bxmov si, ax ;做了16位乘法算法后,dx的值已经被改变 ;si中存放显示区域的每行的首偏移地址mov al, [bp] ;因为每个字符是用由两个字节组成的,所以这里计算列数mov bl, 2mul blmov bx, ax ;bx中存放每个字符的第一个字节的地址pop dx ;将上次入栈的dx出栈mov dl, cl ;将颜色信息给dlmov ax, 0B800H ;将段地址指向显示区域的段地址mov es, axmov di, 0s:mov cl, ds:[di]mov ch, 0jcxz ok ;直到遍历到0,停止mov es:[si + bx], cl ;将数据段中的数据取一个一个取出来放到显示区域mov es:[si + bx + 1], dl ;将 颜色信息给字符的后面一个字符,表示颜色add bx, 2add di, 1jmp sok:pop espop bxpop sipop cxpop axretcode endsend start
上面的重要的语句都标了注释,方便大家看懂
下面是运行结果:
0 0
- 汇编语言子函数——显示字符串
- 汇编语言子函数——将数字转换为字符串并显示
- 汇编语言子函数——除法溢出问题
- 汇编语言子函数——延时函数
- 汇编语言子函数——将字符串的小写字母转换为大写字母
- 汇编语言子函数——128位的加法运算
- 汇编语言子函数——64位减法运算
- 王爽《汇编语言》实验10.1——显示字符串
- 汇编语言 实验10.1 显示字符串
- 《汇编语言》读书笔记(7)——在屏幕的指定位置显示字符串
- 汇编语言——利用地址显示文本
- 《汇编语言》王爽 --实验十 显示字符串
- 王爽 汇编语言 实验十 1、显示字符串
- 子函数
- 王爽《汇编语言》实验10.3——数值显示
- 汇编语言——十进制显示Bx的值
- 实训汇编语言设计——比较两个字符串
- 80x86 汇编语言:输入字符串、显示其中数字
- iOS开发- 日志打印(常见)
- Mac下启动和停止Mysql服务
- [wordpress搬家]软件推荐 — Genymotion
- .net上机第一题 - 简单的字符串运算
- 《Xilinx可编程逻辑器件设计与开发(基础篇)》连载21:Spartan-6的时钟资源
- 汇编语言子函数——显示字符串
- Android Margin, Padding, Gravity属性用法
- iOS 企业版打包
- NSArray的遍历方法:四种
- linux中用date命令获取昨天、明天或多天前后的日期
- Android 反射调用资源和id
- 黑马程序员_多线程
- java自带线程池和队列详细讲解
- Windows消息传递机制