汇编语言实验十-《汇编语言-王爽老师》
10、实验十
1、显示字符串
主要需解决的问题:字符串在显存中的地址定位
代码及注释如下:
;LAB10-1.asm
assume cs:code
data segmentdb 'Welcome to masm!',0
data endscode segment
start: mov dh,10 ;行mov dl,15 ;列mov cl,2 ;颜色mov ax,data mov ds,ax mov si,0call show_strmov ax,4c00hint 21hshow_str: push ax push bxpush espush si mov ax,0b800hmov es,axmov ax,160 ;一行160Bmul dh ;计算出(dh)行对应的显存起始地址,结果存放于ax中mov bx,ax ;bx=ax=160*dh mov ax,2mul dl ;计算(dl)列对应的显存单元地址,ax=dl*2add bx,ax ;mov bx, (160*dh + dl*2)设置es:bx指向显存首地址mov al,cl ;把颜色cl赋值almov cl,0s0: mov ch,[si] ;待显示的源数据jcxz s1 ;(ds:si)=0时,转到show1执行mov es:[bx],ch ;显示字符mov es:[bx].1,al ;显示字符颜色inc si ;ds:si指向下一个字符地址add bx,2 ;es:bx指向下一个显存地址jmp s0s1: pop sipop espop bx pop axret
code ends
end start
运行结果
2、解决除法溢出的问题
没看懂
https://blog.csdn.net/Skies_/article/details/122230794
https://blog.csdn.net/shaco_/article/details/105472170
https://blog.csdn.net/qq_60829702/article/details/123582250
3、数值显示
assume cs:codedata segmentdb 10 dup (0)
data endscode segment
start: ;mov ax,317ah ;12666mov ax,64h ;100mov bx,datamov ds,bxmov si,0 call dtocmov dh,8h ;行号mov dl,3h ;列号mov cl,2h ;颜色call show_strmov ax,4c00hint 21hdtoc: mov bx,0ah ;将16位除数放在bx中,32位/16位mov dx,0 ;DX为被除数的高16位,低16位为AXdiv bxmov cx,ax ;将商赋给cx来判断算法是否结束add dx,30h ;DX存放余数+30H正好对应数字的ASCII值mov [si],dl ;将所得余数存放在data段中(逆序存放)inc sijcxz okk ;判断是否结束jmp short dtoc ;如果没结束就继续okk: retshow_str:sub dh,1h mov al,dhmov bl,0a0h ;一行160Bmul bl ;bl存放的为显示字符在显存中第一行地址mov di,axadd di,4hmov ax,0b800hmov es,axmov ah,cls: mov cl,-1[si] ;-1[si]=[-1+si],注意汇编语言中不能[si-1]mov ch,0mov al,clmov es:[di],axsub si,1mov cx,sijcxz ok ;以si是否为0来判断是否结束(注意jcxz只能判断cx的值我这里写si是更好理解结束的位置)add di,2jmp short sok: retcode ends
end start
汇编语言实验十-《汇编语言-王爽老师》相关推荐
- 读书笔记:汇编语言 第三版 王爽 清华出版社 前言 章一 章二 章三 章四 章五
汇编语言 第三版 王爽 清华出版社文档记录创建 2020年8月9日15:21:11初稿完成 2020年9月5日15:38:22前言汇编语言,CPU提供的机器指令的助记符的集合不同处理器,机器指令可能不 ...
- 汇编语言 第3版 王爽 检测点习题部分—答案及详细解析
第一章 基础知识 检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为()位. (2)1KB的存储器有() 个存储单元,存储单元的编号从()到() . (3)1KB的存储器可以存 ...
- 汇编语言实验十完整代码和详细解析
汇编语言实验十完整代码和详细解析 建议先自己思考问题的答案,不懂则返回看书 扩展建议: [非必要内容,个人经验感悟] 从这儿开始,我们正式接触子程序,主要是通过 call和 ret 来实现的.这样就涉 ...
- 汇编语言 (第2版) 王爽 中文高清PDF版下载
汇编语言 (第2版) 王爽 中文高清PDF版下载 转载于:https://www.cnblogs.com/gavinhughhu/archive/2009/12/10/1620783.html
- 汇编语言学习:使用王爽写的《汇编语言》第三版(编程环境配置)
汇编语言学习 参考书:使用王爽写的<汇编语言>第三版 学习工具(win7 x64): DOSBox 0.74.masm.exe.link.exe.debug.exe. 另外需要一款编辑器, ...
- 汇编语言实验二 汇编语言程序设计(顺序、多分支、循环)
**实验二 汇编语言程序设计(顺序.多分支.循环)** 一. 实验目的 1.掌握顺序和循环程序结构和设计方法: 2.熟悉在PC机上建立.汇编.连接.调试和运行8086/8088汇编语言程序的过程. 二 ...
- 王爽老师的汇编语言 实验8 jmp是如何实现跳转的
jmp short 标号 jmp near ptr 标号 jcxz 标号 loop 标号 书中给出的几种汇编指令,它们对I的修改是根据转移目的地址和转移起始地址之间的位移来进行的. 在它们对应的机器码 ...
- 汇编语言实验一-《汇编语言-王爽老师》
1.实验一 1.预备知识:debug的使用 r :查看寄存器值 r ax :修改寄存器ax值 d :查看内存中的值,d 段地址:偏移地址(从指定位置,默认显示128个内存单元内容) d 1000:0 ...
- 汇编语言实验五-《汇编语言-王爽老师》
5.实验五 (1).输入程序,debug调试跟踪 问题一:data段中数据不变 问题二:cs=076C.ss=076B.ds=076A 问题三:X-2.X-1 (2) 数据段以及栈均定义了两个字的数据 ...
最新文章
- 用Git上传删除本地项目到gitlab---图文解析
- unity 角色 动画脚本_Unity Animation --动画剪辑(外部来源的动画)
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
- elasticsearch运维实战之2 - 系统性能调优
- jzoj3512-游戏节目【树状数组,双向dfs】
- 和可被 K 整除的子数组
- 使用双栈实现一个队列
- 字符串中最长不重合子串长度
- ubuntu14.04 配置jdk环境变量
- 刚刚申请的博客,自己也是新手!
- 【读书笔记】IOS帝国-Apple Ⅱ/Mac/皮克斯/iPod/iTunes/iPhone/App Store/iPad,苹果教父:史蒂夫·乔布斯传_2020.02.15
- msvcr100.dll不存在
- 怎么用一套键鼠控制两个电脑
- 天津大学计算机学院李晨曦,李晨曦-天津大学-生物医学光子成像实验室
- 【OFDM】AWGN 信道下 BPSK 调制 (卷积码) 性能对比仿真实验 (Matlab 实现)
- win7右下角显示此windows副本不是正版
- win7+Ubuntu双系统安装
- 支付宝周期扣款Java逻辑代码
- oracle 取1条记录,oracle 获取第一条数据
- 无法与域“xxxx.com”的Active Directory域控制器(AD DC)连接 之DNS故障