指令与指令系统和汇编语言程序设计.ppt

上传人:za****8 文档编号:14429818 上传时间:2020-07-20 格式:PPT 页数:35 大小:338.01KB
收藏 版权申诉 举报 下载
指令与指令系统和汇编语言程序设计.ppt_第1页
第1页 / 共35页
指令与指令系统和汇编语言程序设计.ppt_第2页
第2页 / 共35页
指令与指令系统和汇编语言程序设计.ppt_第3页
第3页 / 共35页
资源描述:

《指令与指令系统和汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《指令与指令系统和汇编语言程序设计.ppt(35页珍藏版)》请在装配图网上搜索。

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

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

3、是:指令条数多,格式多样,寻址方式复杂,每条指令的功能强,优点是汇编程序设计容易些,但计算机控制器的实现困难多,很多指令被使用的机会并不多。,指令格式与寻址方式,指令 : 功能 定义 用法,指令格式:,操作码 操作数地址,固定长度 可变长度 交叉安排,无地址 一地址 二地址 多地址,2. 寻址方式,外设寻址,入 / 出端口地址方式,统一映象方式,主存寻址,寄存器寻址,直接寻址,变址寻址,寄存器间址,间接寻址,相对寻址,基地址寻址,立即数寻址,堆栈寻址,1. 指令与指令格式,指令:功能、定义、用法,指令格式: 操作码 操作数地址,固定长度(IBM/ PC),扩展长度(PDP-11),交叉安排(N

4、OVA),无地址 一地址 二地址 多地址,三种方案,按操作数 个数划分,教学计算机的操作码: TEC-2000 16位机采用 8 位固定长度 TEC-2000 8 位机采用 逐段扩展长度,指令格式,寻址方式(又称编址方式)指的是确定本条指令的数据地址及下一条要执行的指令地址的方法。 不同的计算机系统,使用数目和功能不同的寻址方式,其实现的复杂程度和运行性能各不相同。有的计算机寻址方式较少,而有些计算机采用多种寻址方式。通常需要在指令中为每一个操作数专设一个地址字段,用来表示数据的来源或去向的地址。在指令中给出的操作数(或指令)的地址被称为形式地址,使用形式地址信息并按一定的规则计算出来的一个数

5、值才是数据(或指令)的实际地址。在指令的操作数地址字段,可能要指出: 运算器中的累加器的编号或专用寄存器名称(编号) 输入/输出指令中用到的 I/O 设备的入出端口地址 内存储器的一个存储单元(或一 I/O设备 )的地址 有多种 基本寻址方式 和某些 符合寻址方式 ,简介如下:,寻址方式,计算机的CPU中一般设置有一定数量的通用寄存器,用于存放操作数、操作数地址或中间结果。假如指令地址码字段给出某一通用寄存器的编号(地址),且所需的操作数就在这一寄存器中,这就是寄存器寻址方式;若该寄存器中存放的是操作数在内存储器中所在单元的地址,这就是寄存器间接寻址方式。可通过指令的操作码或另设一个字段,来区

6、分这两种不同的寻址方式。,1、寄存器寻址、寄存器间接寻址,例:RegNo.=5, 使用 5# 累加器, 此时 5# 累加器中的内容为 7, 可记为 (R5)=7,,对寄存器寻址方式,操作数就是这里的数值 7,对寄存器间接寻址,从内存 7# 单元读出来的数才是操作数,2、立即数寻址,所需的一个操作数在指令的地址字段部分直接给出。,则 Num 即为操作数的值。,适用于操作数固定的情况,提高了指令的执行速度, 当该立即数的值限定为较小值(占用位数少)时,可在第一个指令字中直接给出,否则可在第二个指令字中给出。,在指令的地址码字段直接给出所需的操作数(或指令) 在存储器中的地址。,则 Addr 为操作

7、数在存储器中的地址。 或转移指令等用到的指令地址。,3、直接寻址,例:Addr = 5718H ,这里的 H 表示 5718 是 16 进制的值, 可能用作下一条指令的地址; 也可能用作操作数的地址,若 5718H = 3,即内存储器 5718 单元中的内容为 3, 则操作数就是这里的 3 。,内存储器,操作数,操作数的地址由指定的变址寄存器(由Reg指定)的内容和指令中的地址码(Disp)相加得到。,4、变址寻址,通用寄存器,加法器,操作数,存储器,例:Disp=18H,Reg=5,(R5)=5700H 则操作数地址 = 5718H,便于对数组元素进行处理, 是计算机中常用的一种寻址方式。,

8、操作数(或指令)的地址由程序计数器 PC 的内容(即当前执行指令的地址)和指令的地址码相加得到。,5、相对寻址,例:Disp = 48H(PC) = 5600H 则实际地址 = 5648H,1)主要用于转移指令,对浮动程序很有用。 2)位移量可正可负,通常用补码表示。,指令的地址码字段给出的内容既不是操作数,也不是操作数的地址,而是操作数(或指令)地址的地址,这被称为间接寻址方式,多一次读内存储器的操作。,6、间接寻址,存储器,操作数,Addr1,指令中的 Addr 可以用其他寻址方式给出,例如变址寻址,这就成为变址寻址与间接寻址的复合寻址方式。,在计算机中设置一个专用的基址寄存器,操作数(或

9、指令)的地址通过基址寄存器的内容和指令中的地址码相加得到。,7、基址寻址,基址寄存器,加法器,存储器,操作数,例:Disp= 18H,BS= 5700H 则操作数地址=5718H,主要用于为程序或数据分配存储区,对多道程序或浮动程序很有用,解决了程序在存储器中的定位和扩大寻址空间等问题。,堆栈是内存储器中一块按 “后进先出” 原则进行读写的存储区,并通过一个专用的寄存器(称为堆栈指针SP)给出堆栈的栈顶(和次栈顶)地址完成数据的读写操作,故不必在指令中用操作数地址字段给堆栈地址。通常在读写操作的前后伴随有计算机自动(不是用户通过指令)修改 SP 内容的动作,以确保按正确的 “后进先出” 原则读

10、写堆栈区。 例如:(SP)- 1 SP和 AR,即SP的内容减 1 存回 SP,并送内存地址寄存器,接下来才可以把数据写到堆栈中。完成一次读堆栈操作后,要接着执行(SP)+ 1 SP 的一次自动修改 SP 内容的操作。,8、堆栈寻址,需要注意的是,指令长度可能是一个字,也可能是两个字或多个字,要看操作数地址字段的位数要求,由具体的情况决定。,单字指令仅用一个指令字。 双字指令要用两个指令字, 此时第二个指令字的内容可能是立即数、一个直接地址或一个变址位移量。,TEC-2000 教学机的指令格式,操 作 码,目的寄存器,源寄存器,I/O 端 口 地 址,相对转移指令的偏移量,直接数 / 内存地址

11、 / 指令中变址偏移量,8位 4位 4位,第一个指令字分为三个主要部分。 最高 8 位是操作码。从这个意义上讲, 教学机的基本指令是固定长度的操作码结构, 最多支持 256 条基本指令。 最低的 8 位有多种用法:给出 1 或 2 个寄存器的编号,或入/出端口的地址,或用于给出相对转移指令的偏移量。,操 作 码,目的寄存器,源寄存器,I/O 端 口 地 址,相对转移指令的偏移量,直接数 / 内存地址 / 指令中变址偏移量,8位 4位 4位,TEC-2000 教学机的指令格式,TEC-2000 16位教学计算机指令举例,00 ADD DR, SR 44 JRC adr 84 PSHF 01 SU

12、B DR, SR 45 JRNC adr 8C POPF 02 AND DR, SR 46 JRZ adr 8F RET 03 CMP DR, SR 47 JRNZ adr 04 XOR DR, SR 41 JR adr 05 TEST DR, SR 80 JMPA adr 06 OR DR, SR CE CALA adr 07 MVRR DR, SR 82 IN i/o port 08 DEC DR 86 OUT i/o port 09 INC DR 0A SHL DR 0B SHR DR 88 MVRD DR, data 85 PUSH DR 81 LORR DR, SR 87 POP D

13、R 83 STRR DR, SR,教学机基本指令,数据移动指令 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,TEC-2000 16位机基本指令系统,指令格式 汇编语句 操作数个数 CZVS 指令分组 功能说明 00000000 DRSR ADD DR,SR 2 * A DRDR+SR 00000001 DRSR SUB DR,SR 2 * A DRDR-SR 00

14、000010 DRSR AND DR,SR 2 * A DRDR and SR 00000011 DRSR CMP DR,SR 2 * A DR-SR 00000100 DRSR XOR DR,SR 2 * * A DRDR xor SR 00000101 DRSR TEST DR,SR 2 * * A DR and SR 00000110 DRSR OR DR,SR 2 * * A DRDR or SR 00000111 DRSR MVRR DR, SR 2 A DRSR 00001000 DR0000 DEC DR 1 * A DRDR-1 00001001 DR0000 INC DR 1

15、 * A DRDR+1 00001010 DR0000 SHL DR 1 * A DR,CDR*2 00001011 DR0000 SHR DR 1 * A DR,CDR /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位机基本指令系统,指令格式 汇编语句 操作

16、数个数 CZVS 指令分组 功能说明 10000000 0000000 JMPA ADR 1 B 无条件跳到ADR ADR(16位) 10000001 DRSR LDRR DR,SR 2 B DRSR 10000010 I/O PORT IN I/O PORT 1 B R0I/O PORT 10000011 DRSR STRR DR,SR 2 B DRSR 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 PORTR0 10000

17、111 DR POP DR 1 B 出栈到 DR 10001000 DR0000 MVRD DR, DATA 2 B DRDATA DATA(16位) 10001100 00000000 POPF 1 * * B FLAG出栈 10001111 00000000 RET 1 B 子程序返回 11001110 00000000 CALA ADR 1 D 调用子程序 ADR(16位),教学机寻址方式,立即数寻址 MVRD DR, DATA 寄存器寻址 MVRR R1,R2 寄存器间接寻址 LDRR DR,SR 直接寻址 CALA ADR 相对寻址 JRC ADR,本章主要内容,指令格式与寻址方式概

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

19、执行等结构),子程序所用哑变元替换为真实参数等方面提供必要的支持,使用这个语言设计程序就更为方便了。汇编语言程序经汇编器程序翻译为机器语言程序后方可运行。,高级语言又称算法语言,它的实现思路,不再是过分地“靠拢”计算机硬件的指令系统,而是着重面向解决实际问题所用的算法,更多的是是为方便程序设计人员写出自己解决问题的处理方案和解题过程的程序。目前常用的高级语言有BASIC、C、C+、,PASCAL、JAVA、PROLOG、VHDL等几百种。用这些语言设计出来的程序,通常需要经过一个叫做编译程序的软件先编译成机器语言程序,或者首先编译成汇编程序后,再经过汇编操作后得到机器语言程序,才能在计算机的硬

20、件系统上予以执行;也可以由一个叫做解释执行程序的软件,逐条取来相应高级语言程序的每个语句并直接控制其完成执行过程,而不是把整个程序编译为机器语言程序之后再一起交给硬件系统加以执行。,教学计算机中的汇编程序的例子,例1:设计一个程序,在屏幕上输出显示一个字符6。 A 2000 ;地址从16进制的2000(内存RAM区的起始地址)开始 2000: MVRD R0,0036 ;把字符6的ASCII码送入R0 2002: OUT 80 ;在屏幕上输出显示字符6,80为串行接口地址 2003: RET ;每个用户程序都必须用RET指令结束 2004: (按回车键即结束源程序的输入过程),教学计算机中的汇

21、编程序的例子,例2:计算1到10的累加和。 A 2060 MVRD R1,0000 ;置累加和的初值为0 MVRD R2,000A ;最大的加数 SUB R3,R3 ;预置参加累加的数为0 (2065) INC R3 ;得到下一个参加累加的数 ADD R1, R3 ;累加计算 CMP R3, R2 ;判断是否累加完 JRNZ 2065 ;未完,开始下一轮累加 RET 运行过后,可以用R命令看R1中的累加结果。,教学计算机中的汇编程序的例子,例3:设计一个程序,用次数控制在终端屏幕上输出0到9十个数字符。 A 2020 MVRD R2,000A ;送入输出字符的个数 MVRD R0,0030 ;

22、0字符的ASCII码 (2024) 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,教学计算机中的汇编程序的例子,例4:从键盘上连续键入多个属于0到9的数字符

23、并在屏幕上显示,遇非数字符结束程序。从地址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否 JRN

24、C 2053 ;是,则转到程序结束处 OUT 80 ;输出刚输入的数字符 JMPA 2044 ;转去程序前边2044处等待输入下一个字符 (2053) RET,教学计算机中的汇编程序的例子,例5:设计一个有读写内存和子程序调用指令的程序,功能是读出指定内存中的大写字母字符,将其显示到屏幕上,转换为小写字母后再写回存储器的原存储单元。 E 20F0 (送入将被显示的6个字符AF到内存20F0开始的存储区域中) 41 42 43 44 45 46 A 2080 MVRD R3, 0006 ;指定被读数据的个数 MVRD R2, 20F0 ;指定被读、写数据内存区首地址 (2084) LDRR R0

25、, R2 ;读内存中的一个字符到R0寄存器 CALA 2100 ;调用子程序,入口地址为2100, ;完成显示、字符转换和写回内存的功能 DEC R3 ;检查输出的字符个数 JRZ 208B ;完成输出则结束程序的执行过程 INC R2 ;未完成,修改内存地址 JR 2084 ;转移到程序的2084处,循环执行规定的处理 (208B) RET A 2100 ;输入用到的子程序到内存2100开始的存储区 OUT 80 ;输出保存在R0寄存器中的字符 MVRD R1, 0020 ;转换保存在R0中的大写字母为小写字母 ADD R0, R1 STRR R2, R0 ;写R0中的字符到内存,地址同LD

26、RR所用的地址 (2105) IN 81 ;测试串行接口是否完成输出过程 SHR R0 JRNC 2105 ;未完成输出过程则循环测试 RET ;结束子程序执行过程,返回主程序 运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用D 20F0命令看内存的20F0区域中保存的运行结果, 6个大写的英文字母已经被修改为小写字母: 0061 0062 0063 0064 0065 0066,教学计算机中的伪指令,写在程序中的、指示汇编程序如何对该程序执行汇编操作的命令叫做伪指令。例如: ORG : ORG exp 指定程序执行的开始地址 END : 指定程序执行的结束地址 EQU : var E

27、QU exp 定义变量的值 var = exp DW : adr DW exp 以为首地址在存储器中 写入指定的值 BLK : BLK n 保留 n 个存储单元,P152 题11: 用教学机的指令系统设计程序,实现从键盘读人四位无符号的整数,到计算机内转换成二进制数存于R0,并输出到屏幕显示。,MVRD R2, 0000 ; 存放结果(累加和) CALA READ-IN ;读键盘上千位值,返回在R0 MVRD R3, 03E8 ;1000D 对应 03E8 H ADD1: ADD R2, R3 ;将千位值加在结果上 DEC R0 ;以键值为加的次数 JRNZ ADD1 CALA READ-IN

28、 ;读键盘上百位值,返回在R0 MVRD R3, 0064 ;100D 对应 0064 H ADD2: ADD R2, R3 ;将百位值加在结果上 DEC R0 ;以键值为加的次数 JRNZ ADD2 CALA READ-IN ;读键盘上十位值,返回在R0 MVRD R3, 000A ;10D 对应 000AH ADD3: ADD R2, R3 ;将十位值加在结果上 DEC R0 ;以键值为加的次数 JRNZ ADD3,CALA READ-IN ;读键盘上个位值,返回在R0 MVRD R3, 0001 ;1D 对应 0001H ADD4: ADD R2, R3 ;将个位值加在结果上 DEC R

29、0 ;以键值为加的次数 JRNZ ADD4 MVRR R0, R2 ; 保存结果 PUSH R0 CALA OUT1 ; ; 依次输出 千 百 十 个 位 CALA OUT2 CALA OUT2 CALA OUT2 POP R0 RET,WAIT-IN子程序 READ-IN: IN 81 ;判键盘上是否按了一个键 SHR R0 ;即串行口是否有了输入的字符 SHR R0 JRNC WAIT-IN ;尚没有输入则循环测试 IN 80 ;把输入字符读到R0低位字节 MVRD R1, 00FF ;将R0的高位字节清0 AND R0, R1 MVRD R1, 0030 SUB RO,R1 MVRD R

30、1, 0000 CMP R0, R1 ;判输入的字符 字符0否 JRNC ERR-RET ;是,则转到程序结束处 MVRD R1, 000A CMP R0, R1 ;判输入的字符 字符9否 JRNC NOR-RET ;不是, ERR-RET:POP R0 ;出错, 返回系统 NOR-RET: RET ; 正常,返回主程序,字符输出子程序,OUT1: SHL R2 ;第一次输出子程序入口 OUT2: RCL R2 ;非第一次输出子程序入口 RCL R2 RCL R2 RCL R2 MVRR R0, R2 ;获得当前的位 MVRD R3,000F ;转化为ASCII 码 AND R0,R3 MVRD R3,000A ;判断字母,数字? CMP R0, R3 JRNC MUB MVRD R3, 0037 ;字母 + 37 JR GET MUB: MVRD R3, 0030 ;数字 + 30 GET: ADD R0,R3 ; 输出保存在R0低位字节的字符 OUT 80 ; 输出当前值 WAIT1: IN 81 ;查询接口状态,判字符的串行输出过程结束否 SHR R0 JRNC WAIT1 ;未完成,则循环等待 RET,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!