第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章 指令系统
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)
运行过程中,可以直接看到屏幕上显示的内容,运行过后,再用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章 指令系统
第五章指令系统操作系统: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章 处理器总线时序和系统总线
清零操作,而将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.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)解释程序解释程序也是一种对高级语言源程序进行翻译处理及的程序。
大学课件MCS51单片机指令系统与汇编语言程序设计
ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。
西门子S7-200PLC指令系统手册
(二)输出指令 梯形图(LAD)中,“()”表示线圈,“能 流”到线圈端,则线圈被激励,其Q寄存器的相 应位为1,反之为0; 语句表(STL)中,输出指令为“=”,把栈 顶值复制到操作数地址指定的存储器位(bit), 堆栈各级栈值不变。 (三)置位和复位指令-把从操作数(bit)指定 的地址开始的N个点都被置位或复位,其中N=1 -255
3. 修改指针:用自增或自减指令修改指针,则可 连续存取存储单元中的数据
五、用户程序的结构 用户程序可分为三个区:主程序、子程序和 中断程序; 主程序(OB1):是用户程序的主体,CPU 在每一个扫描周期都要执行一次主程序指令; 子程序:可选部分,只有主程序调用时才执 行; 中断程序:可选部分,只有当发生中断事件 时,才执行中断程序,可在扫描周期的任意点执 行。
(二)直接寻址-指令中直接给出操作数的地址 的寻址方式 例: 位寻址 AND Q5.5
字节寻址 ORB VB33 , LB21 字寻址 双字寻址 MOVW MOVD AC0 , AQW200 AC1 , VD200
(三)间接寻址-指令中给出了存放操作数地 址的存储单元的地址的寻址方式 1. 建立指针
S7-200 PLC 的SIMATIC指令集不支持完全 数据类型检查; 使用局部变量时,执行简单数据类型检查; 使用全局变量时,指令操作数为地址而不是 可选的数据类型时,执行无数据类型检查。 (二)数据长度和数值范围 数据长度:用字节型(B)、字型(W)、 双字型(D)分别表示8位、16位、32位数据; 不同的数据长度对应的数据范围如表5-4所示
在语句表(STL)中,没有EN允许输入端, 但允许执行指令的条件是栈顶的值必须为1。 功能框的ENO端是允许输出端,即允许功能 框的布尔量输出,用于指令的级联 ; 语句表(STL)中,用AENO(ANDENO)指 令产生允许输出。 (四)条件输入、无条件输入 条件输入:在梯形图(LAD)、功能块图 (FBD)中,与“能流”有关的功能框或线圈不直 接与左母线连接;
专升本微机原理_清华版_第五章(二)
移位指令的特点: 指令码 目标,计数值 ; 目标只能是寄存器、存储器,计数值只能是1或CL中 的值; 影响标志位的情况: 移位指令:除AF=任意值外,其余的根据结果而定 循环移位指令:只影响OF和CF(与逻辑运算指令刚好 相反)
P128 将AL中的值乘以10 的例子: SAL AL,1 ; AL=AL*2 MOV BL,AL ;将2X存于BL中 MOV CL,2 ;移位次数存入CL SAL AL,CL ;在乘以2的基础上再移两位相 当于乘以8 ADD AL,BL ;加上2X则=乘以10 例如,原AL=00000011B (3) 移一位得 00000110B (6), 00000110B 再移两位得 00011000B (24) 00011000B + 00000110B = 00011110B (30) 结果 3*10=30
OR 目标,源 (常用于将二进制数的某些位置1)
OR AL,30H; OR AX,00F0H OR BYTE PTR[BP],0FH OR BL, 0FH xxxxxxxx (BL)
OR
00001111 0F xxxx1111 结果(BL)
XOR 目标,源 (用于将二进制数的某些位求反,将要求反的某些 位与1异或。或对于某寄存器清0)
串扫描(影响标志位)
执行的操作: ①如(CX)=0或ZF=1(某次比较的结果两个操作数相等) 则退出REP,否则往下执行。 ② CX CX-1 例: ③ 执行其后SCAS串指令 MOV DI, OFFSET String ④ 重复①-③
MOV CX, xx MOV AL, ‗h‘ REPNZ SCASB JNZ Not_Found Found:
3.串比较(影响标志位) CMPSB CMPSW 比较地址为DS:SI、ES:DI的两 个字节/字
微机原理及接口技术(习题答案)
第1章微机运算基础习题和思考题1.请完成以下计算:174.66D=(10101110.10101)B=(AE. A8)H10101110101.01011B=(1397.344)D=(575.58)H4BCH=(010*********)B=()BCD2.设字长为8位,X=(2A)16,当X分别为原码、补码、反码和无符号数的时候,其真值是多少?答:当X表示原码时,其真值为:+101010当X表示补码时,其真值为:+101010当X表示反码时,其真值为:+101010当X表示无符号数数时,其真值为:001010103.设字长为8位,用补码形式完成下列计算,要求有运算结果并讨论是否发生溢出?120+18 -33-37-90-70 50+84答:120+18其补码形式分别为:(120)补=01111000 (18)补=0001001001111000+ 0001001010001010由于C s=0 ,C p=1,因此有溢出,结果错误-33-37其补码形式为:(-33)补=11011111 (-37)补=1101101111011111+1101101110111010由于C s=1, C p=1,所以没有溢出,结果正确-90-70其补码形式为:(-90)补=10011100 (-70)补=1011101010011100+1011101001010110由于C s=1, C p=0,所以有溢出,结果错误50+84其补码形式为:(50)补=00110010 (84)补=0101010000110010+0101010010000110由于C s=0, C p=1,所以有溢出,结果错误4.请写出下列字符串的ASCII码值。
My name is Zhang san.4D 79 6E 61 6D 65 69 73 5A 68 61 6E 67 73 61 6E 2E第2章 80X86微机系统习题与思考题1.微型计算机主要由哪些基本部件组成?各部件的主要功能是什么?答:微型计算机主要由输入设备、运算器、控制器、存储器和输出设备组成。
第五章_汇编语言程序设计基础
§5-1 汇编语言的基本概念
汇编 语言 源程 序 汇编 程序 A ss em bl er 机器 语言 目标 程序
汇编语言指令与机器指令之间有一一对应的关系,所以汇 编语言与具体的机器密切相关,是一种面向机器的语言。 不同机器(CPU)的汇编语言不同。 为方便编程,实际的汇编程序常还提供一些除机器指令以 外的命令,被称为伪指令。伪指令(Pseudo Instruction) 仅在汇编过程中指导汇编程序如何生成目的代码,自己本 身并没有对应的机器代码。 汇编语言的指令(语句)包含两类:硬指令或真指令(指 令语句)和伪指令(指示性语句) 。
12
§5-2 汇编语言的基本语言成分
6. 综合运算符(改变属性运算符):由已存在的存储器操作数 (变量/标号)生成一个段地址和位移量相同、类型不同的新 的存储器操作数(变量/标号)。 (1) 改变变量/标号的类型: 格式: 新类型 PTR 变量/标号 功能:把PTR左边的属性赋给右边的变量/标号 [例] 设变量XVAR是字节属性,现把它的两个字节内容送 到AX中起去。 MOV AX , WORD PTR XVAR (2) 定义当前存储单元的类型: 格式: THIS 类型 功能:可用于建立新类型的存储器变量,但不分配新的存 储空间,它的段地址和位移量是汇编时的当前值。 [例] WBUFFER EQU THIS WORD BUFFER DB 100 DUP(?)
17
§5-3 汇编语言源程序的结构
(3) 段的类别属性:通常使用的类别名是‘CODE’、 ‘DATA’、‘STACK’,分别指明是代码段、数据段、 堆栈段;但也允许用户自定义类别名。类别名必须用单引 号括起来。 连接程序在组织段时,将所有同类别的段集中在一起, 进行相邻分配。 2. 段寄存器说明伪指令(ASSUME): 格式: ASSUME 段寄存器:段名 [,段寄存器:段名] 功能:告诉汇编程序,段名所指的段由那一个段寄存器寻 址,即建立段与段寄存器的关系。 说明:段寄存器的实际值(CS除外)还要由数据传送令在 执行程序时赋值。
汇编语言第5章作业答案
习题51.试说明以下指令中各操作数的寻址方式,如果是存储器寻址,请给出其EA计算公式,并说明所使用的段寄存器。
(1)MOV AL,08H 源操作数:立即数寻址目的操作数:寄存器寻址(2)MOV [0120H],BL 源操作数:寄存器寻址目的操作数:直接寻址,EA=0120H,使用DS段寄存器(3)ADD [BX],AL 源操作数:寄存器寻址目的操作数:寄存器间接寻址,EA=(BX),使用DS段寄存器(4)PUSH [SI]0200H 源操作数:变址寻址,EA=(SI)+0200H,使用DS段寄存器目的操作数:隐含寻址(指令中未直接体现)(5)SUB AX,[BP] 源操作数:寄存器间接寻址,EA=(BP),使用SS段寄存器目的操作数:寄存器寻址(6)AND V AR1+4,DL 源操作数:寄存器寻址目的操作数:直接寻址,EA=V AR1+4,使用DS段寄存器(7)PUSHF 源操作数、目的操作数均为隐含寻址(8)MOV ES : [BX]0100H, AL 源操作数:寄存器寻址目的操作数:基址寻址,EA=(BX)+0100H,用ES段寄存器(9)ADC BYTE PTR [BP][SI]0210H,45H源操作数:立即数寻址目的操作数:基址变址寻址,EA=(BP)+(SI)+0210H,使用SS段寄存器(10)OR ARRY[BX][DI],CL源操作数:寄存器寻址目的操作数:基址变址寻址,EA=(BX)+(DI)+ARRY,使用DS段寄存器2.试分析下列汇编指令是否存在语法错误,如果有语法错误存在,请说明是怎样的错误。
(1)PUSH 8243H错误,单操作数指令不能使用立即数(2)POP AL错误,进栈、出栈指令的操作数应为16位(3)MOV AL,6543H错误,源、目的操作数类型不匹配(4)ADD [0100H],64H错误,目的操作数应使用PTR运算符指出类型,否则具有二义性正确的写法:ADD BYTE PTR [0100H],64H,(或使用WORD PTR)(5)ADC V AR1,V AR2错误,8086指令系统的双操作数指令中,必须有一个是寄存器,不能两个操作数同为内存单元(6)MOV DS,ES错误,段寄存器间不能使用MOV指令直接传递数据,必须通过通用寄存器作为中转(7)MOV DS,0620H错误,使用MOV指令向段寄存器传递数据时,不能使用立即数(8)LEA BX,AX错误,L EA指令的源操作数必须为内存单元(9)DEC AL,AH错误,DEC指令为单操作数指令(10)SHR BL,3错误,当移位次数大于1时,在移位指令中特定使用CL寄存器给出移位次数正确的写法:MOV CL, 3SHR BL, CL3.试说明分别执行下列各组指令后,CF、OF、AF、ZF、SF、PF这六个状态标志分别是怎样的取值。
计算机组成原理与汇编语言程序设计课后习题及解答(详解)
计算机组成原理与汇编语言程序设计课后习题及解答徐洁,俸远祯电子工业出版社第1章习题一1.什么是程序存储工作方式?答:计算机的工作方式——存储程序工作方式。
即事先编写程序,再由计算机把这些信息存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。
2.采用数字化方法表示信息有哪些优点?用数字化方法表示信息的优点:(1)抗干扰能力强, 可靠性高。
(2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。
(3)数字化的信息可以存储、信息传送也比较容易实现。
(4)可表示的信息类型与范围及其广泛,几乎没有限制。
(5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成了计算机硬件设计的基础。
3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。
4.数字计算机的主要特点是什么?1. (1)能在程序控制下自动连续地工作;(2|)运算速度快;(3)运算精度高;(4)具有很强的信息存储能力;(5)通用性强,应用领域及其广泛。
5.衡量计算机性能的基本指标有哪些?答:衡量计算机性能的基本指标:(1)基本字长——参加一次运算的数的位数;(2)数据通路宽度——数据总线一次能并行传送的位数;(3)运算速度——可用①CPU的时钟频率与主频,②每秒平均执行指令数,③典型四则运算的时间来表示。
(4)主存储器容量——可用字节数或单元数(字数)×位数来表示。
(6)配备的外围设备及其性能。
(7)系统软件配置。
7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。
系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。
例如WINDOWS98操作系统,C 语言编译程序等,数据库管理系统。
8.对源程序的处理有哪两种基本方式?对源程序的处理通常有两种处理方式:解释方式和编译方式。
第2章习题二1.将二进制数(101010.01)2 转换为十进制数及BCD码。
解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD2.将八进制数(37.2)8转换为十进制数及BCD码.解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD3.将十六进制数(AC.E)转换为十进制数及BCD码.解: (AC.E)16 =(172.875)10 = (000101110010.100001110101)BCD4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。
汇编语言程序设计2
目录系统认识 (1)实验一数码转换编程及程序调试 (5)实验二运算类编程实验 (11)实验三分支程序、循环程序设计实验 (16)实验四子程序设计实验 (22)实验五显示程序实验 (26)实验六串行通讯应用实验 (27)附录WMD86 联机软件使用说明 (40)系统认识一、实验目的掌握TD-PITE微机原理与接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
二、实验设备PC微机一台,TD-PITE实验装置一套。
三、实验内容编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
四、实验步骤1. 运行Wmd86软件,进入Wmd86集成开发环境。
2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1所示。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里,我们选择汇编语言。
图13. 语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2所示。
默认文件名为Wmd861。
图24. 编写实验程序,如图3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。
图3程序:SSTACK SEGMENT STACK ;定义堆栈段DW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000H ;建立数据起始地址MOV CX, 16 ;循环次数AA1: MOV [SI], ALINC SI ;地址自加1INC AL ;数据自加1LOOP AA1AA2: JMP AA2CODE ENDSEND START5. 点击,编译文件,若程序编译无误,则输出如图4所示的输出信息,然后再点击进行链接,链接无误输出如图5所示的输出信息。
图4图56. 连接PC与实验系统的通讯电缆,打开实验系统电源。
汇编语言程序设计教程(第二版)习题参考答案
汇编语言程序设计教程(第二版)习题参考答案第1章计算机基础知识1.计算机的应用分哪几个方面,请举例说明书中未提到的领域的计算机应用。
科学计算、数据处理、计算机控制、计算机辅助设计、人工智能、企业管理、家用电器、网络应用。
书中未提及的如:远程教育、住宅小区控制、飞行系统控制与管理等。
2.简述计算机的发展过程,请查阅相关资料,列出微机的发展过程。
电子管、晶体管、集成电路、大规模集成电路以IBM为例,微机的发展:4004、8008、8080、8086/8088、80286、80386、80486、Pentium 系列3.计算机的字长是怎么定义的,试举例说明。
计算机能同时处理二进制信息的位宽定义为计算机的字长。
如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。
4.汇编语言中的基本数据类型有哪些?数值型数据和非数值型数据。
非数值数据如字符、字符串、逻辑值等。
(1)7BCH=011110111100B=1980D(2)562Q=101110010B=370D(3)90D=01011010B=5AH(4)1110100.111B=164.7Q=74.EH30H~39H 41H~5AH 61H~7AH9.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值?用相应进制的数值加上进制标记即可。
二进制用B,如10101010B八进制用Q,如437Q。
十进制用D或不用,如54D,或54。
十六进制用H,如27A8H10.完成下列二进制数的加减运算。
(1)10101010 + 11110000 (2)11001100 + 01010100=110011010 =100100000(3)11011010 - 01010010 (4)11101110 - 01001101=10001000 =1010000111.完成下列十六进制数的加减运算。
(1)0FEA9 - 8888=7621H (2)0FFFF - 1234=EDCBH(3)0EAC0 + 0028=EAE8H (4)3ABC + 1678=5134H12.完成下列BCD码的运算。
计算机组成原理与汇编语言程序设计
五、汇编语言程序设计
3.操作数:操作数表示指令助记符的操作对象。
4.注释:注释均以分号开始,它可占一行或多行,一般放在一条语句 的后面。 例:一项是含有4个字段的一条指令语句: LOP: MOV AX,0000H ;将AX清零
标号 指令助记符 操作数 注释
例:以下是含有4个字段的一条指令语句 INC CX
数据定义语句按照伪指令DB,DW和DD所确定的数据大小来给变量(或
存储单元)分配相应数量的存储单元,同时给这些存储单元预置由表达式 确定的初值。它们通常有以下几种形式: 1、数值表达式 例如:DATA数据段定义了字节、字、双字变量
五、汇编语言程序设计
DATA SEGMENT
VARB1
5.3汇编语言数据
5.3.1符号定义语句
1、等值伪指令 指令格式:符号 EQU 表达式/符号 EQU伪指令的左移是将表达式的值或表达式赋给EQU左边的符号 例:用符号标识常数、数值表达式 NUM EQU 10H COUN EQU 1234+34-67 VAR DB N令语句格式
标号:指令助记符
操作数的有无、有几个, 取决于指令助记符 翻译后,没有对 应的目标代码
指令语句的一般格式如下: 操作数 ;注释
1.标号:标号是机器指令语句存放地址的符号表示,代表该指令目标 代码的第一个字节地址,后面必须紧跟冒号“:” ,在指令语句中, 是任选字段。 2.指令助记符:指令助记符为语句的核心成分,表示了该语句的操作 类型。
五、汇编语言程序设计
例如: BUF DB 100 DUP(0)
以上语句定义了以BUF为首址,大小为100个字节,初值为0的数据存 储单元。
5.3.3数据
一、常数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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