计算机原理及系统结构 第十八讲 主讲教师:赵宏伟                 学时:64.

Slides:



Advertisements
Similar presentations
我的 动 堂天 漫 制作人: 13312—22 青春 情感 悬疑推理 魔 法 系 列 动 漫系 列 动 漫 之.
Advertisements

证券市场基础知识真题.
NEUSOFT Institute of information Technology .ChengDu
建構 Beta電腦 – Fall /29/0.
™ 全球,唯一支持第三方自动部署的交易系统 中国产权交易所有限公司 二〇一四年十月 超级交易系统V1.0
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
微型计算机技术 教 学 指 导(七) 太原广播电视大学 郭建勇.
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
教师队伍 冷传莉 课程负责人 冷传莉,女,1969年8月生,汉族,山东省蓬莱人,中共党员,教授,贵州大学法学院副院长,硕士生导师,武汉大学法学院民商法博士研究生。 兼任贵州大学民法经济法研究所所长,中国法学会民法学、商法学研究会全国理事,贵州省人民政府行政复议委员会委员,贵州省社科院法学研究所和贵州省社科院民商法研究中心特聘法学研究员,贵州省企业法制研究院副院长,贵阳市人民政府法律顾问,贵阳仲裁研究会副会长,贵阳仲裁委员会资深仲裁员,贵阳法制频道法律顾问。
心理的力量 --兼谈教师心理压力的调适
王晓峰 合肥学院计算机科学与技术系 合肥 计算机科学与技术 导 论 王晓峰 合肥学院计算机科学与技术系 合肥
湖北武当山.
第七章 控制器 7.1 控制器的组成及指令的执行 7.2 控制方式和时序的产生 7.3 微程序控制器 7.4 微程序控制器及其微程序设计举例
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
8051 指令.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
单片机原理与应用.
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
3.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
第三章 寻址方式与指令系统 3.1 寻址方式 一条指令通常由两大部分构成: 操作码 操作数
第7章 并行接口 7.1 简单并行接口 7.2 可编程并行接口8255A 7.3 键盘接口 7.4 LED显示器接口.
第2章 MCS-51单片机指令系统与汇编语言程序设计
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
第二部分 微机原理 第4章 汇编语言 程序设计 主讲教师:喻红.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第3章 IA-32指令系统 3.1 基本数据类型 3.2 IA-32的指令格式 3.3 IA-32指令的操作数寻址方式
第8章 寻址方式与指令系统.
嵌入式微处理器系统 第二章 处理器技术(1) 北京大学软件与微电子学院.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第3章 指令系统及程序设计举例 3.1 指令格式与寻址方式 一、指令格式 1. 指令 操作码 目标操作数,源操作数
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
微型计算机原理及应用.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
第九章 高级宏汇编语言 9.1 结构 结构就是将逻辑上有一定关系的一组数据,以某种方式组合在一起所形成的数据形式。
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
第四章 指令系统及汇编语言程序设计.
第六次全国人口普查 近期数据处理工作部署 夏雨春 2010年12月28日.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
CISC vs. RISC 複雜指令集電腦(Complex Instruction Set Computer: CISC)
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
微机原理与接口技术 西安邮电大学计算机学院 王忠民.
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
5-6 串列埠模式0輸出埠擴充實習.
第 3 章、組合語言 作者:陳鍾誠 旗標出版社.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
2019/4/29 计算机组成原理 辅导教师:陆明强.
學生:吳星龍 班級:資管二乙 指導老師:劉書彥
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
開放電腦計劃 報告人:陳鍾誠 2011 年 8 月 20 日 台灣開源人年會 COSCUP 2011 – 中研院
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
本节内容 计算机不会做加法 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第6章 子程序结构 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 调用子程序的程序称为主调程序或主程序。 2019/7/20 ch6.
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第三章 8086的指令系统 8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集.
第5章 中 央 处 理 器 5.1 CPU的功能和组成 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器
Presentation transcript:

计算机原理及系统结构 第十八讲 主讲教师:赵宏伟                 学时:64

第5章 指令、指令系统和汇编 语言程序设计

本章主要内容 指令格式与寻址方式概述 汇编语言程序设计

指令与指令系统概述 计算机系统由硬件和软件两部分组成。硬件指由中央处理机、存储器以及外部设备等组成的实际装置。软件是为便于用户使用计算机而编写的各种程序,是由一系列机器指令组成的。 指令是用户使用计算机和计算机运行的最小的功能单位,一台计算机支持(或称使用)的全部指令构成该计算机的指令系统,它对计算机本身的硬件结构的复杂程度和运行性能,对用户完成程序设计的难易程度和工作效率,有非常重要的影响,必须对设计指令系统的工作给以足够的重视,慎重确定。 P127

当前的计算机指令系统,从其构成的复杂和完备程度,或者说设计中追求的不同的目标区分,可分为 CISC 和RISC 两类: 完备性: 指令齐全,编程方便 高效性:占内存少,运行省时 规整性:指令与运算规则统一 兼容性:新旧机指令软件兼容 对指令系统的要求   当前的计算机指令系统,从其构成的复杂和完备程度,或者说设计中追求的不同的目标区分,可分为 CISC 和RISC 两类: RISC(Reduced Instruction Set Computer),通常称为精简指令系统的计算机,提供数目较少、格式与功能简单、运行高效的指令,追求的是计算机控制器实现简单,运行高速,更容易在单块超大规模集成电路的芯片内制做出来。 CISC (Complex Instruction Set Computer),通常称为复杂指令系统的计算机,是相对于 RISC 一词而提出来的一种说法。其特点是:指令条数多,格式多样,寻址方式复杂,每条指令的功能强,优点是汇编程序设计容易些,但计算机控制器的实现困难多,很多指令被使用的机会并不多。 P127

指令格式与寻址方式 1. 指令与指令格式 2. 寻址方式 寄存器寻址 外设寻址 间接寻址 立即数寻址 直接寻址 基地址寻址 变址寻址 指令 : 功能 定义 用法 指令格式: 操作码 操作数地址 无地址 一地址 二地址 多地址 固定长度 可变长度 交叉安排 2. 寻址方式 寄存器寻址 入 / 出端口地址方式 外设寻址 统一映象方式 间接寻址 立即数寻址 直接寻址 基地址寻址 变址寻址 相对寻址 主存寻址 堆栈寻址 寄存器间址 P128

计算机原理及系统结构 第十九讲 主讲教师:赵宏伟                 学时:64

寻址方式 寻址方式(又称编址方式)指的是确定本条指令的数据地址及下一条要执行的指令地址的方法。 不同的计算机系统,使用数目和功能不同的寻址方式,其实现的复杂程度和运行性能各不相同。有的计算机寻址方式较少,而有些计算机采用多种寻址方式。通常需要在指令中为每一个操作数专设一个地址字段,用来表示数据的来源或去向的地址。在指令中给出的操作数(或指令)的地址被称为形式地址,使用形式地址信息并按一定的规则计算出来的一个数值才是数据(或指令)的实际地址。在指令的操作数地址字段,可能要指出: ① 运算器中的累加器的编号或专用寄存器名称(编号) ② 输入/输出指令中用到的 I/O 设备的入出端口地址 ③ 内存储器的一个存储单元(或一 I/O设备 )的地址 有多种 基本寻址方式 和某些 符合寻址方式 ,简介如下:

所需的一个操作数在指令的地址字段部分直接给出。 1、立即数寻址 所需的一个操作数在指令的地址字段部分直接给出。 则 Num 即为操作数的值。 适用于操作数固定的情况,提高了指令的执行速度, 当该立即数的值限定为较小值(占用位数少)时,可在第一个指令字中直接给出,否则可在第二个指令字中给出。 P132

在指令的地址码字段直接给出所需的操作数(或指令) 在存储器中的地址。 2、直接寻址 在指令的地址码字段直接给出所需的操作数(或指令) 在存储器中的地址。 内存储器 操作数 则 Addr 为操作数在存储器中的地址。 或转移指令等用到的指令地址。 例:Addr = 5718H ,这里的 H 表示 5718 是 16 进制的值, 可能用作下一条指令的地址; 也可能用作操作数的地址,若 [ 5718H ]= 3,即内存储器 5718 单元中的内容为 3, 则操作数就是这里的 3 。 P132

对寄存器间接寻址,从内存 7# 单元读出来的数才是操作数 3、寄存器寻址、寄存器间接寻址 计算机的CPU中一般设置有一定数量的通用寄存器,用于存放操作数、操作数地址或中间结果。假如指令地址码字段给出某一通用寄存器的编号(地址),且所需的操作数就在这一寄存器中,这就是寄存器寻址方式;若该寄存器中存放的是操作数在内存储器中所在单元的地址,这就是寄存器间接寻址方式。可通过指令的操作码或另设一个字段,来区分这两种不同的寻址方式。 例:RegNo.=5, 使用 5# 累加器 , 此时 5# 累加器中的内容为 7, 可记为 (R5)=7, 对寄存器寻址方式,操作数就是这里的数值 7 对寄存器间接寻址,从内存 7# 单元读出来的数才是操作数 P133

操作数的地址由指定的变址寄存器(由Reg指定)的内容和指令中的地址码(Disp)相加得到。 4、变址寻址 操作数的地址由指定的变址寄存器(由Reg指定)的内容和指令中的地址码(Disp)相加得到。 存储器 通用寄存器 加法器 例:Disp=18H,Reg=5,(R5)=5700H 则操作数地址 = 5718H 操作数 便于对数组元素进行处理, 是计算机中常用的一种寻址方式。 P133

操作数(或指令)的地址由程序计数器 PC 的内容(即当前执行指令的地址)和指令的地址码相加得到。 5、相对寻址 操作数(或指令)的地址由程序计数器 PC 的内容(即当前执行指令的地址)和指令的地址码相加得到。 例:Disp = 48H (PC) = 5600H 则实际地址 = 5648H 1).主要用于转移指令,对浮动程序很有用。 2).位移量可正可负,通常用补码表示。 P133

在计算机中设置一个专用的基址寄存器,操作数(或指令)的地址通过基址寄存器的内容和指令中的地址码相加得到。 6、基址寻址 在计算机中设置一个专用的基址寄存器,操作数(或指令)的地址通过基址寄存器的内容和指令中的地址码相加得到。 存储器 基址寄存器 加法器 例:Disp= 18H,[BS]= 5700H 则操作数地址=5718H 操作数 主要用于为程序或数据分配存储区,对多道程序或浮动程序很有用,解决了程序在存储器中的定位和扩大寻址空间等问题。 P134

指令的地址码字段给出的内容既不是操作数,也不是操作数的地址,而是操作数(或指令)地址的地址,这被称为间接寻址方式,多一次读内存储器的操作。 7、间接寻址 指令的地址码字段给出的内容既不是操作数,也不是操作数的地址,而是操作数(或指令)地址的地址,这被称为间接寻址方式,多一次读内存储器的操作。 Addr1 指令中的 Addr 可以用其他寻址方式给出,例如变址寻址,这就成为变址寻址与间接寻址的复合寻址方式。 存储器 操作数 P134

需要注意的是,指令长度可能是一个字,也可能是两个字或多个字,要看操作数地址字段的位数要求,由具体的情况决定。 8、堆栈寻址 堆栈是内存储器中一块按 “后进先出” 原则进行读写的存储区,并通过一个专用的寄存器(称为堆栈指针SP)给出堆栈的栈顶(和次栈顶)地址完成数据的读写操作,故不必在指令中用操作数地址字段给堆栈地址。通常在读写操作的前后伴随有计算机自动(不是用户通过指令)修改 SP 内容的动作,以确保按正确的 “后进先出” 原则读写堆栈区。 例如:(SP)- 1  SP和 AR,即SP的内容减 1 存回 SP,并送内存地址寄存器,接下来才可以把数据写到堆栈中。完成一次读堆栈操作后,要接着执行(SP)+ 1  SP 的一次自动修改 SP 内容的操作。 需要注意的是,指令长度可能是一个字,也可能是两个字或多个字,要看操作数地址字段的位数要求,由具体的情况决定。 P134

计算机原理及系统结构 第二十讲 主讲教师:赵宏伟                 学时:64

教学机基本指令 数据移动指令 算术逻辑指令 控制转移指令 MVRR、MVRD、LDRR、STRR、PUSH、POP、PSHF、POPF、IN、OUT 算术逻辑指令 ADD、SUB、AND、XOR、TEST、CMP、OR、DEC、INC、SHL、SHR 控制转移指令 CALA、RET、JMPA、JR、JRC、JRNC、JRZ、JRNZ P138

TEC-2000 16位机基本指令系统 00000000 DRSR ADD DR,SR 2 **** A DR←DR+SR 指令格式 汇编语句 操作数个数 CZVS 指令分组 功能说明 00000000 DRSR ADD DR,SR 2 **** A DR←DR+SR 00000001 DRSR SUB DR,SR 2 **** A DR←DR-SR 00000010 DRSR AND DR,SR 2 **** A DR←DR and SR 00000011 DRSR CMP DR,SR 2 **** A DR-SR 00000100 DRSR XOR DR,SR 2 * * • • A DR←DR xor SR 00000101 DRSR TEST DR,SR 2 * * • • A DR and SR 00000110 DRSR OR DR,SR 2 * * • • A DR←DR or SR 00000111 DRSR MVRR DR, SR 2 • • • • A DR←SR 00001000 DR0000 DEC DR 1 **** A DR←DR-1 00001001 DR0000 INC DR 1 **** A DR←DR+1 00001010 DR0000 SHL DR 1 * • • • A DR,C←DR*2 00001011 DR0000 SHR DR 1 * • • • A DR,C←DR /2 01000001 OFFSET JR ADR 1 • • • • A 无条件跳转 01000100 OFFSET JRC ADR 1 • • • • A C=1 时跳转 01000101 OFFSET JRNC ADR 1 • • • • A C=0 时跳转 01000110 OFFSET JRZ ADR 1 • • • • A Z=1 时跳转 01000111 OFFSET JRNZ ADR 1 • • • • A Z=0 时跳转

TEC-2000 16位机基本指令系统 指令格式 汇编语句 操作数个数 CZVS 指令分组 功能说明 10000000 0000000 JMPA ADR 1 • • • • B 无条件跳到ADR ADR(16位) 10000001 DRSR LDRR DR,[SR] 2 • • • • B DR←[SR] 10000010 I/O PORT IN I/O PORT 1 • • • • B R0←[I/O PORT] 10000011 DRSR STRR [DR],SR 2 • • • • B [DR]←SR 10000100 00000000 PSHF 0 • • • • B FLAG 入栈 10000101 0000SR PUSH SR 1 • • • • B SR 入栈 10000110 I/O PORT OUT I/O PORT 1 • • • • B [I/O PORT]←R0 10000111 DR POP DR 1 • • • • B 出栈到 DR 10001000 DR0000 MVRD DR, DATA 2 • • • • B DR←DATA DATA(16位) 10001100 00000000 POPF 1 * *** B FLAG←出栈 10001111 00000000 RET 1 • • • • B 子程序返回 11001110 00000000 CALA ADR 1 • • • • D 调用子程序 P141

计算机原理及系统结构 第二十一讲 主讲教师:赵宏伟                 学时:64

TEC-2000 教学机的指令格式 8位 4位 4位 操 作 码 目的寄存器 源寄存器 I/O 端 口 地 址 相对转移指令的偏移量 8位 4位 4位 操 作 码 目的寄存器 源寄存器 I/O 端 口 地 址 相对转移指令的偏移量 直接数 / 内存地址 / 指令中变址偏移量 单字指令仅用一个指令字。 双字指令要用两个指令字, 此时第二个指令字的内容可能是立即数、一个直接地址或一个变址位移量。 第一个指令字分为三个主要部分。 最高 8 位是操作码。从这个意义上讲, 教学机的基本指令是固定长度的操作码结构, 最多支持 256 条基本指令。 最低的 8 位有多种用法:给出 1 或 2 个寄存器的编号,或入/出端口的地址,或用于给出相对转移指令的偏移量。

教学机寻址方式 立即数寻址 寄存器寻址 寄存器间接寻址 直接寻址 变址寻址 MVRD DR, DATA MVRR R1,R2 LDRR DR,[SR] 直接寻址 CALA ADR 变址寻址 JRC ADR P142

计算机原理及系统结构 第二十二讲 主讲教师:赵宏伟                 学时:64

教学机指令功能及其在程序中的作用 指令功能及其在程序中的作用 例5.1:在显示器屏幕上循环显示95个可打印字符。 例5.2:把字符A~F写到内存2040~2045单元中,然后读出并在屏幕上显示。 例5.3:从键盘输入字符并送到显示器显示。 P144

本章主要内容 指令格式与寻址方式概述 汇编语言程序设计

汇编语言程序设计 机器语言是计算机硬件能够直接识别和运行的指令的集合,是二进制码组成的指令,对程序设计人员来说很难以接受,直接用机器指令设计程序实在是太困难了。 汇编语言大体上是对计算机机器语言的符号化处理的结果,再增加一些为方便程序设计而实现的扩展功能。汇编语言至少有2大优点。首先实现用英文单词或其缩写形式替代二进制的指令代码,更容易记忆和理解;其次可以选用英文单词来表示程序中用到的数据(常量和变量),并且避免程序设计人员亲自为这些数据分配存储单元,而是留给汇编程序自己去安排,这样的语言就达到了实用的最基本的标准。如果在此基础上,再在支持程序的不同结构特性(如循环和重复执行等结构),子程序所用哑变元替换为真实参数等方面提供必要的支持,使用这个语言设计程序就更为方便了。汇编语言程序经汇编器程序翻译为机器语言程序后方可运行。

高级语言又称算法语言,它的实现思路,不再是过分地“靠拢”计算机硬件的指令系统,而是着重面向解决实际问题所用的算法,更多的是是为方便程序设计人员写出自己解决问题的处理方案和解题过程的程序。目前常用的高级语言有BASIC、C、C++、,PASCAL、JAVA、PROLOG、VHDL等几百种。用这些语言设计出来的程序,通常需要经过一个叫做编译程序的软件先编译成机器语言程序,或者首先编译成汇编程序后,再经过汇编操作后得到机器语言程序,才能在计算机的硬件系统上予以执行;也可以由一个叫做解释执行程序的软件,逐条取来相应高级语言程序的每个语句并直接控制其完成执行过程,而不是把整个程序编译为机器语言程序之后再一起交给硬件系统加以执行。

教学计算机中的汇编程序的例子 例5.4:设计一个程序,在屏幕上输出显示一个字符‘6’。 A 2000 ;地址从16进制的2000(内存RAM区的起始地址)开始 2000: MVRD R0,0036 ;把字符‘6’的ASCII码送入R0 2002: OUT 80 ;在屏幕上输出显示字符‘6’,80为串行接口地址 2003: RET ;每个用户程序都必须用RET指令结束 2004: (按回车键即结束源程序的输入过程) P147

教学计算机中的汇编程序的例子 例5.5:设计一个程序,用次数控制在终端屏幕上输出‘0’到‘9’十个数字符。 A 2020 MVRD R2,000A ;送入输出字符的个数 MVRD R0,0030 ;‘0’字符的ASCII码 OUT 80 ;输出保存在R0低位字节的字符 DEC R2 ;输出字符个数减1 JRZ 202E ;判全部字符输出完否,已完,则转移到程序结束处 PUSH R0 ;未完,保存R0的值到堆栈中 (2028) IN 81 ;查询接口状态,判字符的串行输出过程结束否 SHR R0 ; JRNC 2028 ;未完成,则循环等待 POP R0 ;已完成,准备继续输出下一字符,从堆栈恢复 ; R0 的值 INC R0 ;得到下一个要输出的字符 JR 2024 ;转去输出字符 (202E) RET P147

教学计算机中的汇编程序的例子 例5.6:从键盘上连续键入多个属于‘0’到‘9’的数字符并在屏幕上显示,遇非数字符结束程序。从地址2040开始输入下列程序: A 2040 MVRD R2,0030 ;用于判数字符的下界值 MVRD R3,0039 ;用于判数字符的上界值 (2044) IN 81 ;判键盘上是否按了一个键 SHR R0 ;即串行口是否有了输入的字符 SHR R0 JRNC 2044 ;尚没有输入则循环测试 IN 80 ;把输入字符读到R0低位字节 MVRD R1, 00FF AND R0, R1 ;将R0的高位字节清0 CMP R0, R2 ;判输入的字符 < 字符‘0’否 JRNC 2053 ;是,则转到程序结束处 CMP R3, R0 ;判输入的字符 > 字符‘9’否 OUT 80 ;输出刚输入的数字符 JMPA 2044 ;转去程序前边2044处等待输入下一个字符 (2053) RET P148

教学计算机中的汇编程序的例子 例5.7:计算1到10的累加和。 A 2060 MVRD R1,0000 ;置累加和的初值为0 MVRD R2,000A ;最大的加数 SUB R3,R3 ;预置参加累加的数为0 (2064) INC R3 ;得到下一个参加累加的数 ADD R1, R3 ;累加计算 CMP R3, R2 ;判断是否累加完 JRNZ 2065 ;未完,开始下一轮累加 RET 运行过后,可以用R命令看R1中的累加结果。 P149

教学计算机中的汇编程序的例子 例5.8:设计一个有读写内存和子程序调用指令的程序,功能是读出指定内存中的大写字母字符,将其显示到屏幕上,转换为小写字母后再写回存储器的原存储单元。 E 20F0 (送入将被显示的6个字符‘A’~‘F’到内存20F0开始的存储区域中) 41 42 43 44 45 46 A 2080 MVRD R3, 0006 ;指定被读数据的个数 MVRD R2, 20F0 ;指定被读、写数据内存区首地址 (2084) LDRR R0, [R2] ;读内存中的一个字符到R0寄存器 CALA 2100 ;调用子程序,入口地址为2100, ;完成显示、字符转换和写回内存的功能 DEC R3 ;检查输出的字符个数 JRZ 208C ;完成输出则结束程序的执行过程 INC R2 ;未完成,修改内存地址 JR 2084 ;转移到程序的2084处,循环执行规定的处理 RET A 2100 ;输入用到的子程序到内存2100开始的存储区 OUT 80 ;输出保存在R0寄存器中的字符 MVRD R1, 0020 ;转换保存在R0中的大写字母为小写字母 ADD R0, R1 STRR [R2], R0 ;写R0中的字符到内存,地址同LDRR所用的地址 (2105) IN 81 ;测试串行接口是否完成输出过程 SHR R0 JRNC 2105 ;未完成输出过程则循环测试 RET ;结束子程序执行过程,返回主程序 运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用D 20F0命令看内存的20F0区域中保存的运行结果, 6个大写的英文字母已经被修改为小写字母: 0061 0062 0063 0064 0065 0066 P149

教学计算机中的伪指令 写在程序中的、指示汇编程序如何对该程序执行汇编操作的命令叫做伪指令。例如: ORG : ORG exp 指定程序执行的开始地址 END : 指定程序执行的结束地址 EQU : var EQU exp 定义变量的值 var = exp DW : adr DW exp 以为首地址在存储器中 写入指定的值 BLK : BLK n 保留 n 个存储单元