汇编实验九

20171308171 胡欣怡

一、实验目的
1. 掌握十进制两位数输出的方法
2. 理解 80×25 彩色字符模式显示原理
3. 综合应用寻址方式和汇编指令完成应用编程
二、实验准备
1. 复习数值和数字字符之间的转换方法,div 指令用法
2. 学习 P187-189 支撑材料及「实验 9 提示」(本文档最后一部分)
3. 复习灵活的寻址方式及本次实验中用到的指令,如 mov, loop,div 等。
三、实验内容
1. 补全程序 t1.asm,完成在屏幕上输出内存单元中的十进制两位数

; 在屏幕上输出内存单元中的十进制两位数
assume cs:code, ds:data
data segment
db 12
db ?,? ; 前一个字节用于保存商,后一个字节用于保存余数
data ends
code segment
start:
××××
×××× ; 补全指令,使得ds <-- data段地址

mov ah,0
mov al,ds:[0] ; ax <-- data段字节单元的被除数12
mov bl,10
div bl
mov ××,al ; 补全代码,让商保存到data段注释中指定的单元
mov ××,ah ; 补全代码,让余数保存到data段注释中指定的单元

mov ah,2
mov dl,×× ; 补全代码,使得dl <-- data段中保存的商的字节单元数值
×××× ; 补全代码,使得dl中的数值转换为数字字符
int 21h

mov ah,2
mov dl,×× ; 补全代码,使得dl <-- data段中保存余数的字节单元数值
×××× ; 补全代码,使得dl中的数值转换为数字字符
int 21h

mov ax,4c00h
int 21h
code ends
end start

补全程序 放入软件下编译连接

得到结果为12

2. 补全程序 t2.asm,完成在屏幕上输出 data 段定义的 5 个十进制两位数,数据和数据
之间以空格间隔。

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,4c00h
int 21h
code ends
end start

补全程序

结果

 

3. 教材实验 9(P187)

ps:
① t1.asm 和 t2.asm,以及实验 9 的程序框架 ex9.asm,可以从课程公邮→文件中心→
实验文件夹,下载实验 9 程序框架。
② 实验 9 提示见本文档最后一部分

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

; 添加代码,通过循环逐个将每个字符及其属性送入相应的显示缓冲区对应行
; 即:将data段的字符及属性通过循环逐个mov到显示缓冲区(es)段相应的单元内

; 可以先尝试分别写三段代码,每次完成一行的显示
; 程序运行起来后,再尝试通过灵活的寻址方式和循环,对三段代码修改和简化
; 学习第10章子程序后,还可以进一步完善优化,设计子程序,将行号、列号、颜色属性设置成入口参数

mov ax,4c00h
int 21h
code ends
end start

四、总结与体会

通过这次实验我学会了如何运用div命令以及对这个命令的了解更加深了一步

 

转载于:https://www.cnblogs.com/jinevol/p/10104255.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

U盘安装centos 7 提示 “Warning: /dev/root does not exist, could not boot” 解决办法

安装centos 7时提示 “Warning: /dev/root does not exist, could not boot” 这个问题是没有找到你的U盘&#xff0c;这个配置是需要在上一步需要完成的&#xff0c;但在上一步我们并不知道U盘的文件名&#xff0c;所以索性在这一步查看一下U盘的设备名&#xff0c;然后再回到…

【原创】大叔经验分享(6)Oozie如何查看提交到Yarn上的任务日志

通过oozie job id可以查看流程详细信息&#xff0c;命令如下&#xff1a; oozie job -info 0012077-180830142722522-oozie-hado-W 流程详细信息如下&#xff1a; Job ID : 0012077-180830142722522-oozie-hado-W -----------------------------------------------------------…

Beta 冲刺(3/7)

Beta 冲刺&#xff08;3/7&#xff09; Beta 冲刺 &#xff08;3/7&#xff09; 队名&#xff1a;第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬&#xff08;组长&#xff09; 过去两天完成了哪些任务 文字/口头描述 参与开发关键词提醒部分展示G…

vuex的理解

首先需要了解vuex的基本概念和使用方式&#xff0c;vue的官网也有很详细的说明或者浏览&#xff1a;https://zhuanlan.zhihu.com/p/24357762。vue是单页应用所以当页面刷新时vuex的数据随之也被清空了&#xff0c;如何实现页面被刷新而数据没有被清空呢&#xff1f;vuex主要是v…

Redis高可用sentinel

1.sentine介绍 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案&#xff0c;当用Redis做Master-slave的高可用方案时&#xff0c;假如master宕机了&#xff0c;Redis本身(包括它的很多客户端)都没有实现自动进行主备切换&#xff0c;而Redis-sentinel本身也是一个独立运行…

关于eclipse web项目认不到用户库的问题

解决方法&#xff1a; 选中项目右键属性&#xff0c;弹出对话框&#xff0c;选择Deployment Assembly&#xff0c;设置用户库对应路径。

Python中 类和对象调用其他类中的变量和方法

class house_item: def __init__(self,name,area): self.namename self.areaarea def __str__(self): return "%s,\n面积是%.2f" % (self.name,self.area)class house: def __init__(self,house_type,house_area): self.typeho…

201771010109焦旭超《面向对象程序设计(java)》第十六周学习总结

1、实验目的与要求 (1) 掌握线程概念&#xff1b; (2) 掌握线程创建的两种技术&#xff1b; (3) 理解和掌握线程的优先级属性及调度方法&#xff1b; (4) 掌握线程同步的概念及实现技术&#xff1b; 2、实验内容和步骤 实验1&#xff1a;测试程序并进行代码注释。 测试程序1&am…

Hibernate hql getHibernateTemplate()常用方法汇总

getHibernateTemplate()常用方法 一、find(String queryString); 示例&#xff1a; Java代码 this.getHibernateTemplate().find("from bean.User"); 返回所有User对象 二、find(String queryString , Object value); 示例&#xff1a; Java代码 this.getHib…

阿里巴巴的26款超神Java开源项目!

1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件&#xff0c;方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托…

为DEV C++/CodeBlock配置gdb调试遇到的问题

DEV C和CodeBlock都只是一个IDE&#xff0c;不能编译调试&#xff0c;需要自己配置MINGW和gdb调试 1、MINGW 在这下载mingw-get-setup.exe安装即可。 https://sourceforge.net/projects/mingw/files/MinGW/ 配置MINGW很简单&#xff0c;安装包就好了&#xff0c;可以只安装gcc和…

Java面向对象第二章课后习题

网盘链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/12YzJZY3s4XSq5C94HxWqZA 提取码&#xff1a;3w23 一、商场为员工提供了基本工资、物价津贴以及房租津贴。其中&#xff0c;物价津贴为基本工资的40%&#xff0c;房租津贴为基本工资的25%。 要求&#xff1a;从…

Tomcat映射虚拟路径到指定磁盘(eclipse)

用WangEditor富文本编辑&#xff0c;上传图片的时候&#xff0c;本文主要记录一下Tomcat映射虚拟路径到指定磁盘&#xff0c;保存到指定路径中&#xff0c;且能实现页面预览。 在实现之前wangeditor的简单实用请参照博主小道仙的后宫&#xff0c;写的很详细&#xff1a;http://…

JVM内存简析

JAVA的JVM的内存可分为3个区&#xff1a;堆(heap)、栈(stack)和方法区(method) 堆区:1.存储的全部是对象&#xff0c;每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只有一个堆区(heap)被所有线程共享&#xff0c;堆中不存放基本类型和对象引用&a…

centos下离线安装mysql

卸载原有冲突的依赖包 rpm -e postfix rpm -e mariadb-libs 按顺序安装 rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm rpm -ivh mysql-com…

记一次es和mq的netty冲突

1.今天在服务里面加了 es 6.4的 依赖包后&#xff0c;在预发布测试时候出现了下列的问题 看了 半天&#xff0c;最后发现是 es的 jar包 和 mq的 netty包 有冲突。然后去idea的 jar包依赖里面查看&#xff0c;mq使用的 是 而es依赖的netty 是多个 不同的包&#xff0c; 而在依赖…

Windows平台下搭建自己的Git服务器

Gitblit 是一个纯 Java 库用来管理、查看和处理 Git 资料库&#xff0c;相当于 Git 的 Java 管理工具。 Gitblit 支持Linux操作系统&#xff0c;因此 Gitblit 需要java运行环境&#xff08;JRE&#xff09;。 如果公司要搭建自己的 Git 服务器&#xff0c;可以使用 Gitblit 这个…

Python 基本数据类型 (二) - 字符串

str.expandtabs([tabsize]): str类型的expandtabs函数&#xff0c;有一个可选参数tabsize&#xff08;制表符大小&#xff09;详细来说&#xff0c;expandtabs的意思就是&#xff0c;将字符串中的制表符\t&#xff0c;全部用空格来替换。至于用多少个空格&#xff0c;需要参考制…

如何预防后台被攻击?Tomcat 的安全配置来啦!

安全是系统架构中最重要的关注点之一&#xff0c;通常情况下&#xff0c;所说的安全涵盖网络安全、数据安全、操作系统安全、服务器安全以及应用系统安全等诸多方面。Tomcat 是一个免费的开放源代码 的Web应用服务器&#xff0c;技术先进、性能稳定。由于它优秀的稳定性以及丰富…

Spring Boot 单例模式中依赖注入问题

在日常项目开发中&#xff0c;单例模式可以说是最常用到的设计模式&#xff0c;项目也常常在单例模式中需要使用 Service 逻辑层的方法来实现某些功能。通常可能会使用 Resource 或者 Autowired 来自动注入实例&#xff0c;然而这种方法在单例模式中却会出现 NullPointExceptio…