Assembly Experiment9
用英文写太浪费时间了,而且书上的讲解对各种功能的英文原句少之又少,有空还是看龙书吧(不存在的)
实验1: 十六进制转换十进制
实验代码:
- ; 在屏幕上输出内存单元中的十进制两位数
- assume cs:code, ds:data
- data segment
- db 12
- db 1,2 ; 前一个字节用于保存商,后一个字节用于保存余数
- data ends
- code segment
- start:
- mov ax,data
- mov ds,ax ; 补全指令,使得ds <-- data段地址
- mov ah,0
- mov al,ds:[0] ; ax <-- data段字节单元的被除数12
- mov bl,10
- div bl
- mov ds:[1],al ; 补全代码,让商保存到data段注释中指定的单元
- mov ds:[2],ah ; 补全代码,让余数保存到data段注释中指定的单元
- mov ah,2
- mov dl,ds:[1] ; 补全代码,使得dl <-- data段中保存的商的字节单元数值
- add dl,30h ; 补全代码,使得dl中的数值转换为数字字符
- int 21h
- mov ah,2
- mov dl,ds:[2] ; 补全代码,使得dl <-- data段中保存余数的字节单元数值
- add dl,30h ; 补全代码,使得dl中的数值转换为数字字符
- int 21h
- mov ax,4c00h
- int 21h
- code ends
- end start
实验截图:
实验结果:
实验2:实验1升级版,要求将一串十六进制数转化为十进制数
- assume cs:code, ds:data
- data segment
- db 12,35,96,55,67
- data ends
- code segment
- start:
- ; 补全程序,参考t1.asm,综合应用以下知识完成:
- ; (1) loop指令、内存单元地址的灵活表示
- ; (2) div指令, 数字→数字字符的转换
- ; (3) int 21h的2号子功能,完成单个字符输出的方法,即:
- ; mov ah,2
- ; mov dl,待输出字符或其ASCⅡ码
- ; int 21h
- ; (4) 数据和数据之间以空格间隔的实现: 使用(3)输出空格字符
- mov ax,data
- mov ds,ax
- mov si,0
- mov cx,5
- s: mov ah,0
- mov al,ds:[si] ; ax <-- data段字节单元的被除数12
- mov bl,10
- div bl
- mov dl,al
- mov dh,ah
- mov ah,2
- add dl,30h
- int 21h
- add dh,30h
- mov ah,2
- mov dl,dh
- int 21h
- mov ah,2
- mov dl,' '
- int 21h
- inc si
- loop s
- mov ax,4c00h
- int 21h
- code ends
- end start
实验截图:
实验结果:
这里还是比较简单的,利用寄存器si每次加上1来进行转换到下一个十六进制数,利用一个循环就能解决问题,不过也可以利用栈的方法解决
实验3:书上实验9 根据材料编程
编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 'welcome to masm!'
实验代码:
- assume ds:data, cs:code
- data segment
- db 'welcome to masm!'
- db 2H,24H,71H
- data ends
- code segment
- start: mov ax,data
- mov ds,ax ;字符串及属性值所在段的段地址送入ds
- mov ax,0b800H
- mov es,ax ;80×25彩色字符模式显示缓冲区段地址送入es
- mov bx,0 ; bx为ds的偏移地址
- mov si,0 ;si为es的偏移地址
- mov cx,16 ;循环16次
- s1: mov al,ds:[bx]
- mov ah,ds:[10h] ;第一种 2H
- mov word ptr es:[si],ax
- mov ah,ds:[11h] ;第二种 24H
- mov word ptr es:[si+80],ax
- mov ah,ds:[12h] ;第三种 71H
- mov word ptr es:[si+160],ax
- inc bx
- add si,2
- loop s1
- mov ax,4c00h
- int 21h
- code ends
- end start
实验结果:
然而??? 内存不够了吗。。。
??????
请孙锐同学帮一手
实验总结:
这次实验我们学习了:
Assembly Experiment9的更多相关文章
- 为C# as 类型转换及Assembly.LoadFrom埋坑!
背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...
- ASP.NET Core: You must add a reference to assembly mscorlib, version=4.0.0.0
ASP.NET Core 引用外部程序包的时候,有时会出现下面的错误: The type 'Object' is defined in an assembly that is not referenc ...
- An error occurred during the installation of assembly 'Microsoft.VC90.CRT……的问题
有一段时间没有用到AnkhSvn了,今天工作需要安装了一下.结果安装到一半就无法继续了,提示An error occurred during the installation of assembly ...
- Beennan的内嵌汇编指导(译)Brennan's Guide to Inline Assembly
注:写在前面,这是一篇翻译文章,本人的英文水平很有限,但内嵌汇编是学习操作系统不可少的知识,本人也常去查看这方面的内容,本文是在做mit的jos实验中的一篇关于内嵌汇编的介绍.关于常用的内嵌汇编(AT ...
- MAC上安装 HLA(High Level Assembly)
1.安装HLA 最新版的hla汇编器可在这里下载,支持MacOs,Linux,Windows平台 2.安装步骤 将下载好的hla程序包放在Mac根目录下 最重要的一步是设置好环境变量,打开Mac根目录 ...
- .NET 程序集Assembly使用
概述 一直以来,我们都在用C#编写程序,编写程序的时候,我们用到继承.多态.接口以及泛型,我们也都明白子类可以继承抽象类,并能够重写父类的抽象方法,可是大家是否想过,如下几个问题: 1.凡树必有根和叶 ...
- configuration error-could not load file or assembly crystaldecisions.reportappserver.clientdoc
IIS启动网站后报错: configuration error Could not load file or assembly 'crystaldecisions.reportappserver.cl ...
- Could not load file or assembly 'Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its de
页面加载时出现这个错误: Could not load file or assembly 'Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Cul ...
- How to make your assembly more secure from referencing by unauthorized bits
Now the security has a trend to become more and more important in our daily work, hence I did some r ...
随机推荐
- 三元运算和bytes数据类型笔记
三元运算 result = 值1 if条件 else 值2 如果条件为真:result = 值1 如果条件为假:result = 值2 bytes数据类型 字符串可以编码成字节包,字节包也可以解码成 ...
- DevExpress v18.2新版亮点——DevExtreme篇(一)
行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExtreme Complete Sub ...
- Docker数据卷持久化
Docker提供三种不同的方式将数据从宿主机挂载到容器中:volumes,bind mounts和tmpfs. volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/ ...
- IntelliJ IDEA 使用教程(2019图文版) -- 从入门到上瘾
IntelliJ IDEA 使用教程(2019图文版) -- 从入门到上瘾 前言:IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是 ...
- day04 list tuple
一. 上节课内容回顾 字符串 由', ", ''', """括起来的内容是字符串 字符:单一文字符号. 字符串: 把字符连成串(有顺序的) 索引和切片 s[st ...
- [JDBC] 实用性能提升
在Java以及JavaWeb中,应用的性能是很重要的.尤其是数据库后端对应用的性能影响. 一.使用缓存 性能问题大多数情况下罪魁祸首是访问数据库的那些代码.因为连接到数据库需要准备好连接(connec ...
- 跟技术胖学vue+koa
首页热卖商品组件 技术点:1热卖商品封装成单独的组件 2路由和参数的传递 3详情页面路由参数的接收 //首页 <template> <div> <div class= ...
- Excel 常用属性的一小部分
1.由于工作需要,最近积累了一些Excel中的相关知识,特此记录 Workbooks xlbooks = xlApp.Workbooks; Workbook xlbook = xlbooks.Add( ...
- 基于vue的图片查看插件vue-photo-preview
1. 安装 在任务管理器中输入命令 2. 在项目main.js中引入 3.在所需要的项目中直接使用 还有两个属性,可以看需求添加 preview-title-enable="false&qu ...
- hadoop day 7
1.storm概述 应用于实时的流式计算,结合消息队列和数据库进行使用. Spouts:拓扑的消息源 Bolts:拓扑的处理逻辑单元,每个bolt可以在集群当中多实例的并发执行 tuple:消息元组, ...