第5章 指令与指令系统和汇编语言程序设计(2)

合集下载

汇编语言程序设计

汇编语言程序设计

6)组合运算符(属性修改运算符) ① PTR运算符:运算符PTR可以指定或修改存储器操作数的 类型。注意,这种修改是临时性的,仅在该语句内有效。 下面是使用PTR运算符的例子: 例10 INC BYTE PTR[BX] 该语句的目的操作数是内存单元,用寄存器作为地址指 针。如果仅仅使用[BX]来表示该操作数,则汇编该语句时 ,不能确定该存储单元是字节单元还是字单元。因此,必 须使用BYTE PTR说明它为字节操作数(若为字操作数, 则使用WORD PTR说明)。
4)分析运算符:分析运算符有:SEG、OFFSET、TYPE、 LENGTH和SIZE。 ① SEG运算符:利用SEG运算符可以得到一个标号或变量的段 基值。下面的指令将ARRAY的段基值送给DS寄存器。 例4 MOV AX,SEG ARRAY MOV DS,AX ② OFFSET运算符:利用OFFSET运算符可以得到一个标号或 变量的偏移量。下面的指令将STRING的偏移地址送给DX。 例5 MOV DX,OFFSET STRING ③ TYPE运算符:运算符TYPE的运算结果是一个数值,这个数 值与操作数类型的对应关系见表4-1。
4.1.3
汇编语言的表达式
(3)表达式。表达式是操作数常见的形式,它由常数、变量 、标号通过操作运算符连接而成。 汇编语言中有:算术运算符、逻辑运算符和关系运算符等 。 1)算术运算符:常用的有:+(加)、–(减)、*(乘)、/ (除)和MOD(模运算)等,算术运算的结果是一个数值 。 例1 MOV AX,VARX+2 表示VARX的地址加2后对应的存储字单元内容送给AX。 2)逻辑运算符:AND(逻辑“与”)、OR(逻辑“或”) 、NOT(逻辑“非”)和XOR(逻辑“异或”)。逻辑运算 用于数值表达式中对数值进行按位逻辑运算,并得到一个数 值结果。 例2 MOV AL,0FH AND 35H 表示将0FH与35H按位相与后得到05H送给AL, 这条指令 与MOV AL, 05H 等效。

第5章 指令系统

第5章  指令系统

1.立即寻址方式
寻找的操作数紧跟在指令操作码之后,也就是说 地址码字段存放的不是操作数的地址,而是操作 数本身。 立即寻址方式的特点是:指令执行的时间很短, 因为不需要访问存储器获取操作数,从而节省了 访问存储器的时间;立即寻址方式的使用范围很 有限,主要用于给寄存器赋初值。 【例5-1】 MOV AX,67 指令执行后,(AX)=67。
操作的示意图如下图所示,这条指令的执行结果为 (AX)=3412H。

存储器 操作码 操作码 AX 00H 代码段 位 移 DISP 量
01H 20000H
201A0H 12H 34H
数据段
6.基址变址寻址

操作数的偏移地址是一个基址寄存器(BX、BP) 和一个变址寄存器(SI、DI)的内容之和。基址 变址寻址方式的格式表示为:[基址寄存器名][变 址寄存器名]或[基址寄存器名+变址寄存器名]。操 作数默认位于那个段中,是由指令中使用的基址 寄存器决定的,如果指令中指定的基址寄存器是 BX,则操作数默认在数据段中,取DS寄存器的 值作为操作数的段地址值;如果指令中指定的基 址寄存器是BP,则操作数默认在堆栈段中,取SS 寄存器的值作为操作数的段地址值,从而计算得 操作数的20位物理地址,继而访问到操作数。
每条指令由两部分组成:操作码字段和地
址码字段。格式如图5-1所示:操作码操作 数(地址码)
操作码 操作数(地址码)
图5-1 指令格式
操作码字段:用来说明该指令所要完成的操作。 地址码字段:用来描述该指令的操作对象。一般是直接给 出操作数,或者给出操作数存放的寄存器编号,或者给出操作 数存放的存储单元的地址或有关地址的信息。 根据地址码字段所给出地址的个数,指令格式可分为零地 址、一地址、二地址、三地址、多地址指令。大多数指令需要 双操作数,分别称两个操作数为源操作数和目的操作数,指令 运算结果存入目的操作数的地址中去。这样,目的操作数的原 有数据将被取代。

第5章 指令与指令系统和汇编语言程序设计(2)

第5章 指令与指令系统和汇编语言程序设计(2)

运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用D 20F0命令看内存的20F0区域中保存的运行结果,6个大写的英文字母 已经被修改为小写字母: 0061 0062 0063 0064 0065 0066
汇编语言程序设计
1 将寄存器R2和R3的内容相加,结果存入R0。 2 将寄存器R2和R3的内容相加,如果有进位,寄存器R0的内 容置1,否则置0 3 若R1的内容是负数则置R0为-1,否则置0(提示:用TEST) 4 检测R3的是奇数,R0的内容置为1,否则置为0。(提示: 用移位检测C的方法来测量一位) 5 将内存中1000H起始的10个单元的内容取出加2送入原地址。 6 已知内存中1000H起始的10个单元中的数是ASC码,将其取 出送显示。 7 将键盘录入的数存到内存1000H单元中。 8 将键盘录入的10个数存到内存1000H-1009H。
有寄存器寻址,寄存器间接寻址等7种。
从表5.1中可以看出, (A组) INC DR 单操作数(DR的内容加1) (B组) LDRR DR,[SR] 双操作数 (DR [SR])
(4)从指令的功能区分
有运算、读写内存类指令,输入输出指令,转移 指令,子程序调用指令,置进位标志指令等。
从表5.1中可以看出, (A组) ADD DR ,SR 加运算 (B组) LDRR DR,[SR] 读写内存
41 42 43 44 45 46
A 2080
MVRD R3, 0006 ;指定被读数据的个数
MVRD R2, 20F0 ;指定被读、写数据内存区首地址
(2084) LDRR R0, [R2]
;读内存中的一个字符到R0寄存器
CALA 2100 ;调用子程序(入口地址为2100),完成显示、

第5章 指令系统

第5章 指令系统

第五章指令系统操作系统:DOS,WINDOWS,UNIX,......程序设计语言服务程序:KV300,PCTOOLS,...机器语言:汇编语言:高级语言解释执行编译执行PASCAL易教好学FORTRAN 计算C 长于计算控制BASIC易学好记COBOL事务管理应用软件:WORD,EXCEL,ACCESS,DBASE,......二进制,CPU直接执行的指令系统把源程序汇编成机器语言目标程序计算机系统软件5.1 指令系统概述计算机系统中运行的软件有系统软件和应用软件两种。

系统软件对整个计算机系统进行调度、管理、监视、服务,为用户提供使用方便,扩大机器功能,提高机器使用效率。

应用软件是用户针对某种领域实际应用需求而开发的软件。

许多通用商品化的应用软件现已成为系统软件,如Word 等。

前述所有各种软件的设计基础就是计算机的指令系统。

名词解释:指令:命令计算机直接进行某种基本操作的二进制代码串,也叫机器语言代码。

每条指令可以完成一个独立的算术运算或逻辑运算操作。

从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令。

微指令是微程序级的命令,它属于硬件;宏指令是由若干条机器指令组成的软件指令,它属于软件;而机器指令则介于微指令与宏指令之间。

指令系统:一台计算机能直接理解与执行的全部指令的集合称为该机的指令系统,也叫机器语言。

指令系统是进行计算机逻辑设计和编制程序的基本依据。

它直接说明了这台计算机的功能.不同类型CPU的指令系统是不能混用与兼容的,但同一系列的CPU一般升级后指令都有扩充,并可兼容。

复杂指令系统计算机(CISC)和精简指令系统计算机(RISC)5.2指令格式5.2.1 指令的结构指令字:代表指令的一组二进制代码信息;指令长度:指令字中二进制代码的位数;1、典型的指令格式OP A操作码OP——指明操作性质的命令码,提供指令的操作控制信息。

操作对象A——说明操作数存放的地址,有时则就是操作数本身。

微机原理 第5章 处理器总线时序和系统总线

微机原理 第5章 处理器总线时序和系统总线
存器、IP、DS、SS、ES寄存器及指令队列进行
清零操作,而将CS设置为0FFFFH。
⑨ CLK 时钟信号(输入) 8086的标准时钟频率为8MHZ。
第5章 功能相同的32个引脚的含义(续)
⑩ VCC 电源引脚,8086CPU采用单一的+5V电源
11
GND 接地引脚,有两个。 MN/MX 最小/最大组态控制(输入)
两种组态下,名称和功能相同的32个引脚的含义 同一引脚在不同时刻传送不同的信息,称为 分时复用引脚 ① AD15~AD0(Address Data Bus) 地址/数据复用引脚 (输入/输出,三态) 在DMA方式,此线浮空。
第5章
功能相同的32个引脚的含义(续)
地址/状态复用引脚
② A19/S6~A16/S3(Address/Status) (输出,三态)
数据
8288主要控制总线的含义(续)
MRDC(Memoy Read Command):存储器读命令 MWTC(Memoy Write Command):存储器写命令 IORC(I/O Read Command):I/O读命令 IOWC(I/O Write Command):I/O写命令 这4个信号全是低电平有效的输出信号。
也就是一个总线操作即将结束,另一个总线周期还未
开始时,称为无源状态,很显然,这时 S2 S1 S0中任一 信号的改变,都意味着一个新的总线周期的开始。
第5章
8288主要控制总线的含义
ALE(Address Latch Enable) 地址锁存允许信号 (输出)
高电平有效。这是8288总线控制器提供给地址 锁存器8282/8283的控制信号,把当前地址/数
注意:在I/O操作时,这些地址不用,全为低电平。

第五章 指令系统习题

第五章 指令系统习题

第五章指令系统一、选择题1、采用直接寻址,操作数在中。

A、主存B、寄存器C、硬盘D、光盘2、为了缩短指令中某个地址段的位数,有效的方法是采取。

A、立即寻址B、变址寻址C、间接寻址D、寄存器寻址3、指令系统采用不同寻址方式的目的是。

A、实现存储程序和程序控制B、缩短指令长度,扩大寻址空间,提高编程灵活性C、可以直接访问外存D、提供扩展操作码的可能,并降低指令译码难度4、假设寄存器R中的数值为200,主存地址为200和300的地址单元中存放的内容分别是300和400,则方式下访问到的操作数为200。

A、直接寻址200B、寄存器间接寻址(R)C、存储器间接寻址(200)D、寄存器寻址R5、输入输出指令的功能是。

A、进行算术运算和逻辑运算B、进行主存和CPU之间的数据传送C、进行I/O设备和CPU之间的数据传送D、改变程序执行的顺序6、下列关于RISC的描述中,不正确的是。

A、只选用简单的,使用频率高的指令,所以采用RISC的CPU的性能较差,不能运行复杂的指令B、指令长度固定,指令格式和寻址方式少C、采用硬布线逻辑,提高指令执行的速度D、采用指令流水线技术,大部分指令都能在一个机器周期中完成。

7、间接寻址是指。

A、指令中直接给出操作数地址B、指令中直接给出操作数C、指令中间接给出操作数D、指令中间接给出操作数的地址8、基址寻址方式中,操作数的有效地址等于。

A、基址寄存器的内容加上形式地址(偏移量)B、变址寄存器的内容加上形式地址(偏移量)C、程序计数器的内容加上形式地址(偏移量)D、堆栈寄存器的内容加上形式地址(偏移量)8.通常指令编码的第一个字段是__ __A.操作B.指令C.操作码D.控制码9.堆栈常用于 _A.程序转移B.输入输出C.数据移位D.保护程序现场10.在堆栈中保持不变的是_ _A.栈指针B.栈底C.栈顶D.栈中数据11.设寄存器R=1000,地址1000处的值为2000,2000处为3000,PC的值为4000,用相对寻址方式,-2000(PC)的操作数是__ __A.4000 B.3000C.5000 D.700012.直接转移指令的功能是将指令中的地址代码送入__ __A.PC B.累加器C.存储器 D.地址寄存器13.以下的 D 不能支持数值处理。

第5章 8086的指令系统

第5章   8086的指令系统

图5.4
例5.16的执行情况
寄存器相对寻址可用于表格处理或访问一维数组中的元
素。把表格的首地址设置为位移量,利用修改间接寄存器的值
来存取表格中的任意一个元素。 表5.2列举了一些寄存器相对寻址方式所用的示例。
表5.2 寄存器相对寻址示例
指 令 二进制 位数 功 能 说 明 将 ES 附加段有效地址为 DI 加上 64H 中字的内容送入 AX 寄存器中 将数据段有效地址为 SI 加上偏移量中字节的内容送入 CL 寄存器中 将数据段有效地址为 EAX 加上 0AH 中字的内容送入 DI 寄存器中 将数据段有效地址为 EBX 加上偏移量中双字的内容送入 EAX 寄存器中
图5.2
例5.5的执行情况
【例5.8 】 MOV AX, 系统默认为 数据段)
这种寻址方法是以数据段的地址为基础,可在多达64KB 的范围内寻找操作数。 ② 8086中允许段超越(除默认的数据段DS以外),即允许 操作数在以代码段、堆栈段或附加段为基准的区域中。
寄存器寻址使用的寄存器类型要匹配,8位和16位,16
位和32位及8位和32位寄存器是决不能混用的。有些指令可 除外,如:SHL AX,CL。详细在后面讲。
除上述两种寻址方式外,以下各种寻址方式的操作数 均在代码段以外的存储区中,寻址方式通过不同的途径求 得操作数的偏移地址,即有效地址EA ( Effective Address)。 3.直接寻址(Direct Addressing)
第5章
INTEL 8080/8088 指令系统
5.1 概述
5.2 8086/8088的寻址方式
5.3 指令格式 5.4 8086 /8088指令系统 习题与思考题
5.1 概
述(p70)

大学计算机基础第五章

大学计算机基础第五章

大学计算机基础第五章第五章软件技术基础1.程序设计语言(1)机器语言和汇编语言由计算机硬件系统可以识别的指令组成的语言称为机器语言。

汇编语言是将机器指令映射为一些可以被人读懂的助记符。

由于计算机只能识别机器语言,所以汇编语言通常需要通过汇编程序翻译为机器语言。

汇编语言的翻译软件称为汇编程序,它可以将程序员写的助记符直接转换为机器指令,然后由计算机去识别和执行。

用机器语言编写的程序是计算机可以直接执行的程序。

用机器语言编写的程序,代码长度短,执行效率高。

但是,这种语言的缺点也很明显。

最主要的是编写机器语言程序必须要熟知CPU 的指令代码,编写程序既不方便,又容易出错,调试查错也非常困难。

而且编写的程序只能在特定的机器上运行,没有通用性。

(2)高级语言高级语言源程序翻译为指令代码有两种做法:编译或者解释。

编译通过编译程序来完成。

解释则是通过解释程序完成。

解释的结果产生可以直接执行的指令。

编译的结果是得到目标程序。

目标程序也是要经过连接才会得到可执行程序目前应用比较广泛的几种高级语言由FORTRAN/BASIC/PASCAL/C等。

(3)面向对象的语言(4)未来的语言2、语言处理程序语言处理程序是把源程序翻译成机器语言的程序,可分为三种:汇编程序、编译程序和解释程序。

(1)汇编程序把汇编语言源程序翻译成机器语言程序的程序称为汇编程序,翻译的过程称为汇编。

汇编程序在翻译源程序时,总是对源程序从头到尾一个符号一个符号地进行阅读分析,一般用两遍扫描完成对源程序的加工转换工作。

汇编语言在翻译的同时,还对各种形式的错误进行检查和分析,并反馈给用户,以便修改。

反汇编程序也是一种语言处理程序,它的功能与汇编程序相反,它能把机器语言程序转换成汇编语言程序。

(2)编译程序编译程序是把高级语言源程序(如Fortran、Pascal、C 等)翻译成目标程序(机器语言程序)的一种程序,翻译的过程称为编译。

(3)解释程序解释程序也是一种对高级语言源程序进行翻译处理及的程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

指令的分类
(1)从指令的长度区分
从表5.1中可以看出, (A组) ADD DR,SR (B组) JMPA ADR
1字(DR为目标,SR为源) 2字 (无条件跳转到ADR)
其具体的指令可以是: ADD R1,R2 (R2的内容和R1的内容相加,结果存入R1) 机器码:0000 0000 0010 001
8位
4位
4位
操 作 码 目的寄存器 源寄存器
用到的寻址方式
寄存器寻址 寄存器间接寻址
I/O 端 口 地 址 相对转移指令的偏移量
立即数寻址 直接地址寻址 变址寻址
立即数 / 直接地址 / 变址偏移量
相对寻址 堆栈寻址
单字指令分为三个主要部分:
IO端口地址
高 8 位是固定长度的操作码, 最多支持 256 条指令。
第5章
指令、指令系统和汇编 语言程序设计
教学机的基本指令
算术逻辑运算指令
ADD、SUB、AND、XOR、TEST、 CMP、 OR、DEC、 INC、SHL、SHR
数据移动指令
MVRR、MVRD、LDRR、STRR
堆栈操作指令
指令命名规则
MV: MOVE LD: LOAD ST: STORE SH: SHIFT JMP: JUMP CAL: CALL
R0←[I/O PORT]
STRR [DR],SR PSHF PUSH SR OUT I/O PORT POP DR
2 0 1
···· ···· ····
B 组 指
[DR]←SR FLAG入栈 SR入栈
1 1
···· ····

[I/O PORT]←R0 DR←出栈
MVRD DR,DATA
2
····
低 8 位有多种用法:给出 1 或 2 个寄存器的编号,
或 输入/输出的端口地址,
或 相对转移指令的 8 位的偏移量。
双字指令的第二个字的内容可能是:立即数、直接地址、变址偏移量。
TEC-2000 16位机基本指令系统
指令格式
汇编语句
00000000 DR SR 00000001 DR SR 00000010 DR SR 00000011 DR SR 00000100 DR SR 00000101 DR SR 00000110 DR SR 00000111 DRSR 00001000 DR0000 00001001 DR0000 00001010 DR0000 00001011 DR0000 01000001 OFFSET 01000100 OFFSET 01000101 OFFSET 01000110 OFFSET 01000111 OFFSET
ADD DR,SR SUB DR,SR AND DR,SR CMP DR,SR XOR DR,SR TEST DR,SR OR DR,SR MVRR DR,SR
DEC DR
INC DR
SHL DR
SHR DR
JR ADR
JRC ADR
JRNC ADR
JRZ ADR
JRNZ ADR
操作数 个数
2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1
其具体的指令可以是: INC R2 (R2内容加1,) 机器码:0000 1001 0010 0000
TEC-2000 16位机基本指令系统
指令格式
10000000 0000000 ADR(16位)
10000001 DRSR 10000010 I/O PORT 10000011 DRSR 10000100 00000000 10000101 0000SR 10000110 I/O PORT 10000111 DR0000 10001000 DR0000
JMPA 2003H(无条件跳转到内存2003H单元) 机器码:10000000 0000 0000 0100 0000 0000 0011
(2)从操作数的个数区分
从表5.1中可以看出, (A组) INC DR 单操作数(DR的内容加1) (B组) LDRR DR,[SR] 双操作数 (DR <- [SR])
PUSH、POP、PSHF、POPF
输入输出指令
RET: RETURN JR: JUMP RELATIVE
IN、OUT
转移指令
R: REGISTER D: DATA
JMPA、JR、JRC、JRNC、JRZ、JRNZ A: ADDRESS
子程序调用与返回指令
F: FLAGS
CALA、RET
教学机的指令格式
DATA(16位) 10001100 00000000 10001111 00000000
11001110 00000000
汇编语句 JMPA ADR
操作数 个数
1
CZ 指令 VS 类型
功能说明
····
无条件跳到ADR
LDRR DR,[SR]
2 ····
DR←[SR]
IN I/O PORT
1 ····
DR←DATA
POPF RET
CALA ADR
0 **** 0 ····
FLAG←出栈 子程序返回
1
····
D组
调用首地址为 ADR的子程序
思考题
1、寄存器寻址的指令MVRR R1,R2 指令长度是多少?执 行时间是多少? 2、立即数寻址指令MVRD R1,2003H 的指令长度是多少? (该指令有几个操作数,寄存器可以用几位数表示?立即数 可以用几位数表示?操作码占去了几位?) 3、LDRR R1,[R2] 指令长度是多少?执行时间是多少? 4、ADD R1,2003 , ADD R2,0001H ,INC R1 这三条指 令格式分别是什么样? 5、LDRA R1,[2003H] 和 LDRR R1,[R2] 这两指令格 式分别是什么样? 6、JMPA ADR和 JR ADR有什么区别?长度是多少?
ቤተ መጻሕፍቲ ባይዱCZVS
**** **** ·*·· **** ·*·· **** ·*·· ···· **** **** *··· *··· ···· ···· ···· ···· ····
指令 类型
A 组 指 令
功能说明
DR←DR + SR
DR←DR-SR
DR←DR and SR
DR-SR
DR←DR xor SR DR and SR DR←DR or SR DR←SR DR←DR-1 DR←DR+1 DR,C←DR*2 DR,C←DR/2 无条件跳转到ADR C=1时跳转到 ADR C=0时跳转到 ADR Z=1时跳转到 ADR Z=0时跳转到 ADR
相关文档
最新文档