汇编语言第四章:指令系统和寻址方式
寻址方式及指令系统习题与解答

寻址方式及指令系统习题与解答计算机科学与工程学院黄洪波2012年3月一、单项选择题1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为()。
A.5000H B.5008H C.23008H D.32008H2.设DS=1000H,ES=2000H,BX=3000H,指令ADD AL,[BX]的源操作数的物理址为()。
A.13000H B.23000H C.33000H D.3000H3.设DS=2000H,ES=3000H,SI=200H,指令MOV ES:[SI],AL的目的操作数的物理地址为()。
A.20200H B.30200H C.50200H D.200H4.指令MOV MEM[BX],AX中的MEM是()。
A.原码B.反码C.补码D.移码5.用来作为寄存器间接寻址的寄存器有()个。
A.8 B.6 C.5 D.46.指令MOV [BX+SI],AL中的目的操作数使用()段寄存器。
A.CS B.DS C.SS D.ES7.指令MOV BX,[BP+5]中的源操作数使用()段寄存器。
A.CS B.DS C.SS D.ES8.段内间接寻址只改变()中的内容。
A.CS B.IP C.CS和IP D.PSW9.段间间接寻址只改变()中的内容。
A.CS B.IP C.CS和IP D.PSW10.下述指令中不改变PSW的指令是()。
A.MOV AX,BX B.AND AL,0FHC.SHR BX,CL D.ADD AL,BL11.下述指令中不影响CF的指令是()。
A.SHL AL,1 B.INC CXC.ADD [BX],AL D.SUB AX,BX12.两个整数补码9CH和7AH相加运算后,会产生()。
A.无溢出且无进位B.无溢出但有进位C.有溢出且有进位D.有溢出但无进位13.指令JMP WORD PTR [BX]属于()寻址。
A.段内直接B.段内间接C.段间直接D.段间间接14.指令MOV AX,[BX+SI+8]的源操作数属于()寻址。
MCS-51单片机的指令系统

整理ppt
12
4.2 寻址方式
51汇编语言有42种操作码助记符,用来描述33种操作功 能。一种操作码可以使用一种以上的数据类型,又由于 助记符规定了其访问的存储器空间,所以一种功能可能 有几个助记符(如MOV、MOVX、MOVC)。功能助记 符与寻址方式组合,得到111条指令。
整理ppt
13
4.2 寻址方式
1)无操作数单字节指令
这类指令只有操作码字段,操作数隐含在操作码中。
例如:INC DPTR
指令码为 :
数据指针隐含其中
整理ppt
6
指令的组成及字节数
2)含有操作数寄存器号的单字节指令 单字节的指令码由操作码字段和指示操作数所 在寄 存器号的字段组成。 例如;MOV A,Rn 指令码为:
其中,rrr为寄存器Rn的编号
整理ppt
2
4.1 指令和指令程序
“指令”: CPU能直接识别和执行的命令。 指令系统:CPU所能执行的全部指令的集合。
与CPU的能力、使用的方便灵活性密切相关。 指令的记忆问题?指令本身是二进制代码。
例如以下的51单片机指令:
把10放到累 740AH 加器A中 为பைடு நூலகம்便于记忆 指令助
A加20,结 果仍在A中
整理ppt
8
指令的组成及字节数
3.三字节指令(17条)
这条指令的指令码的第1字节为操作码;第2和第3字节为 操作数或操作数地址,有如下3类。 1)16位数据 例如:MOV DPTR,#26ABH 指令码为:
整理ppt
9
指令的组成及字节数
2)8位地址和8位数据 例如:MOV 74H,#0FFH 指令码为:
在MCS-51指令中,若操作数是以R0~R7来表示操作数时, 就属于寄存器寻址方式。
微机原理与汇编程序设计复习题

微机原理与汇编程序设计复习题微机系统与汇编语言复习题单项选择题10某2=20分填空题10某2=20分问答题:5某5=25分程序分析题4某5=20分设计应用题1某15=15分第一章微型计算机概述答:微型计算机系统是以微型计算机为主体,配上软件系统和外部设备而构成的。
第二章计算机中的数据表示1.58的非压缩BCD和压缩BCD各如何表示?写出存入D某的指令。
答:58的非压缩BCD是0508H存入D某的指令:MOVD某,0508H58的压缩BCD和是58H存入D某的指令:MOVD某,0058H2、什么是ASCII码?可表示哪些信息?按其作用可分为哪些?答:ASCII码是美国信息交换标准代码的简称,用于给西文字符编码。
包括英文字母的大小写、数字、专用字符、控制字符等;按其作用可分为:34个控制字符;10个阿拉伯数字52个英文大小写字母;32个专用符号第三章80某86微处理器及其体系结构1、8086CPU信号线RESET的功能是什么?8086复位后内部寄存器状态是怎样的?8086CPU复位后从什么单元中取第一条指令执行。
答:RESET—复位信号输入8086复位后CS=FFFFH、DS=0000H、ES=0000H、SS=0000H、IP=0000H、FR=0000H8086CPU复位后从CS某10H+IP=FFFFH某10H+0000H=FFFF0H地址单元中取第一条指令执行启动系统。
CS:IP=FFFF:0000H2、已知一个SRAM芯片的容量为8K某8和64K某8,地址线、数据线各为多少?答:SRAM芯片的容量为8K某8:地址线13条,数据线8条SRAM芯片的容量为64K某8:地址线16条、数据线8条3、指令指针寄存器IP多少位?有何功能?答:IP是一个16位的寄存器,存放EU要执行的下一条指令的偏移地址,用以控制程序中指令的执行顺序,实现对代码段指令的跟踪4、8086CPU用于地址锁存器输入允许的控制信号和用于数据收发器允许的控制信号各是什么信号?答:用于地址锁存器输入允许的控制信号是ALE,用于数据收发器允许的控制信号是DEN5、是什么引脚?答:等待测试引脚6、INTA是什么引脚?答:中断响应引脚7、M/IO是什么引脚?答:存储器访问/输入输出访问控制引脚8、8086CPU最小、最大方式时用于总线请求、允许的信号线各是什么?答:最小:HOLD---总线请求HLDA---总线响应最大:RQ/GT0、RQ/GT19、8086CPU访问存贮器和访问I/O的地址分别各为什么?可寻址的最大存贮器空间和最大I/O空间分别各为多少?答:8086CPU访问存贮器的地址是A19—A0,可寻址的最大存贮器空间是1MB.8086CPU访问I/O的地址是A15—A0,可寻址的最大I/O空间是64KB.10、什么是逻辑地址?什么是物理地址?它们各自如何表示?如何转换?答:程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内地址)组成。
汇编语言

MOV 23H,#30H
MOV 12H,#34H MOV R0,#23H MOV R7,#22H MOV R1,12H; MOV A,@R0; r1=? a=?
MOV 34H,@R1; 34h=? MOV DPTR,#6712H MOV 12H,DPH; 12h=? MOV R0,DPL; MOV A,@R0; r0=? a=?
LOOP: ADD INC
R0, #0FF
A, DPTR R1
;1机器周期
;1机器周期 ;2机器周期
DJNZ
RET
R0, LOOP
;2机器周期
;2机器周期
结果:定时时间 =▁▁▁▁▁
六、控制转移类指令
子程序调用:
概念:子程序(c中叫函数),调用。
1)acall/lcall addr11/addr16 区别在于访问的范围:一个是2k一个是64k; 2)ret
三、算术运算类指令
十进制调整:
例: mov a,#23h
add a,#18h; a=? da a; a=?
note: DA指令将十六进制的加法结果调整为BCD码加 法的结果。
四、逻辑运算&位运算
逻辑运算:0-1表示true-false
1)与: anl
2)或: rol 3)异或:xrl 4)非: cpl
xchd a,@r0;
寻址方式
寻址方式: (操作数如何取得的问题) 上述提到了类似的指令:
1)mov a,#30h 2)mov a,30h 3)mov a,r0 4)mov c,30h 5)movc a,@a+dptr
对应的寻址方式是: 1)立即数寻址;2)直接寻址;3)寄存器寻址; 4)位寻址;5)变址寻址;
第四章_Pentium指令系统

标志寄存器传送指令
4.2 通用整数指令及应用
4-9
8/16/32 位 8/16/32 位通 ⑴ 传送指令 段寄存器 存储器 用寄存器
指令格式:MOV 寻址规定:
目的操作数,源操作数 8/16/32 REG/MEM/SREG , REG SREG REG MEM 位立即数 REG/MEM, SREG REG/SREG, MEM REG/MEM, IMM
第四章 Pentium指令系统 与汇编语言编程
第四章 Pentium指令系统与汇编语言编程
4-2
4.1 概
述
4.2 通用整数指令及应用 4.3 汇编语言程序概述
4.4 常用伪指令语句
4.5 汇编语言编程入门
4.1
概
述
4-3
Pentium的指令系统是在80X86系列指令系统的基础 上逐步发展而形成的,在代码级具有向上兼容性。它增 加了指令的种类,增强了一些指令的功能,提供了32位 寻址方式和32位操作方式,并且包含全部浮点运算指令。 Pentium指令的操作数可以是0~3个,根据寻址方式 不同,可直接包含在指令中,也可存于寄存器或存储器 中。每条指令的长度因指令而异,平均指令长度为3.2字 节。指令的操作数宽度可以是8位、16位、32位,寻址宽 度可以是16位或32位。 Pentium指令系统的突出特点是:功能强、灵活性 高,给编译程序和汇编语言程序的设计人提供了很宽的 选择余地。
4.2 通用整数指令及应用
4-8
数据传送指令主要包括:
通用数据传送指令。如数值传送指令(MOV)、装入 有效地址指令(LEA)、段装入指令、交换类指令(XCHG 和BSWAP)、查表转换指令(XLAT)等。 堆栈指令。如PUSH类/POP类指令等。 数据类型变换指令。如数据宽度变换指令,带符号 数符号位扩展/无符号数位扩展指令等。 I/O指令。如IN类/OUT类指令等。
第4章 指令系统(二)

课程名称 授课时间 教学目标 教学重点 教学难点 教学时数 教学内容: 第 4 章 8086/8088 寻址方式及指令系统(二) 计算机组成原理(第二十八讲) 任课教师 地点 多媒体 授课班级 1. 掌握跨段知识 2. 掌握 8086/8088 指令系统 1. 跨段应用 2. 8086/8088 指令系统 1. 数据传送指令 2. 乘法指令 3. 控制转移指令 讲授法、演示法、实践操 教学手 2节 教学方法 作法 段 陈 平 人数
4
执行的操作:(POTR)<-- AL (字节操作) (PORT+1,PORT)<-- (AX) (字操作) 短格式为: OUT DX,AL (字节操作) OUT DX,AX (字操作) 执行的操作:((DX))<-- AL (字节操作) ((DX)+1,(DX))<-- (AX) (字操作) 在 IBM PC 机里,所有 I/O 端口与 CPU 之间的通信都由 IN 和 OUT 指令来完成。其中 IN 完 成从 I/O 到 CPU 的信息传送,而 OUT 完成从 CPU 到 I/O 的信息传送。CPU 只能用累加器(AL 或 AX)接收或发送信息。外部设备最多可有 65536 个 I/O 端口,端口号(即外设的端口地址)为 0000~FFFFH。其中前 256 个端口(0~FFH)可以直接在指令中指定,这就是长格式中的 PORT, 此时机器指令用二个字节表示,第二个字节就是端口号。所以用长格式时可以在指令中直接 指定端口号,但只限于外设的前 256 个端口。当端口号≥256 时,只能使用短格式,此时,必 须先把端口号放到 DX 寄存器中(端口号可以从 0000~FFFFH), 然后再用 IN 或 OUT 指令来传送 信息,必须注意。这里的端口号或 DX 的内容均为地址,而传送的是端口中的信息,而且在用 短格式时 DX 的内容就是端口号本身,不需要由任何段寄存器来修改它的值。 输入,输出指令不影响标志位。 (3)XLAT(Translate)换码指令 格式为: XLAT OPR 或 XLAT 执行的操作:(AL)<-- ((BX)+(AL)) 3.地址传送指令 (1)LEA(Load effective addres)有效地址送寄存器指令 格式为: LEA REG,SRC 执行的操作: (REG)<-- SRC 指令把源操作数的有效地址送到指定的寄存器中。 (2)LDS(Load DS with Pointer)指针送寄存器和 DS 指令 格式为: LDS REG,SRC 执行的操作:(REG)<-- (SRC) (DS)<-- (SRC+2) 把源操作数指定的 4 个相继字节送到由指令指定的寄存器及 DS 寄存器中。该指令常指定 SI 寄存器。 (3)LES(Load ES with Pointer)指针送寄存器和 ES 指令 格式为: LES REG,SRC 执行的操作:(REG)<--(SRC) (ES)<--(SRC+2) 把源操作数指定的 4 个相继字节送到由指令指定寄存器及 ES 寄存器中。 该指令常指定 DI 寄存器。 以上三条指令指定的寄存器不能使用段寄存器,且源操作数必须使用除立即数方式及寄 存器方式以外的其它寻址方式。这些指令不影响标志位。 本组指令把变量的偏移地址(LEA)或段地址和偏移地址(LDS 和 LES)送给寄存器,以提供 访问变量的工具。 例 4.3.7: LEA BX,[BX+SI+0F62H] 如指令执行前:(BX)=0400H,(SI)=003CH 则指令执行后:(BX)=0400+003C+0F,(SP))<-- (SRC) (3) POP(Pop from the stack)出栈指令 格式为: POP DST 执行操作:(DST)<-- ((SP) + 1,(SP)) (SP) <-- (SP) + 2 这两条堆栈的进栈和出栈指令。堆栈是以“后进先出”方式工作的一个存储区,它必须 存在于堆栈段中,因而此段地址存放于 SS 寄存器中。它只有一个出入口,所以只有一个堆栈 指针寄存器 SP,SP 的内容在任何时候都指向当前的栈顶,所以 PUSH 和 POP 指令都必须根据 当前 SP 的内容来确定进栈或是出栈的存储单元,而且必须及时修改指针,以保证(SP)指向当 前的栈顶。 堆栈的存取必须以字为单位,所以 PUSH 和 POP 指令只能作字操作。它们可以使用除立即 数以外的其他寻址方式。指令也可以指定段寄存器作为操作数,但 POP 指令不允许用 CS 寄存 器。这两条堆栈指令不影响标志位。 例 4.3.3: PUSH AX 堆栈在计算机工作中起着重要的作用,如果在程序中要用到某些寄存器,但它的内容却 在将来还有用,这时就可以用堆栈把它们保下来,然后到必要时再恢复其原来的内容。例如: PUSH AX PUSH BX „ 其间程序用到 AX 和 BX 寄存器 „ POP BX POP AX 堆栈在子程序结构的程序及中断程序中也很有用,这将在以后加以说明。 (4) XCHG(Exchange) 交换指令 格式为: XCHG OPR1,OPR2 执行操作:(OPR1)<--> (OPR2) 其中 OPR 表示操作数。该指令的两个操作数中必须有一个在寄存器中,因而它可以在寄 存器之间或者在寄存器和存储器之间交换信息,但不允许使用段寄存器。指令允许字或字节 操作,且不影响标志位。 2.累加器专用传送指令 这组指令只限于使用累加器 AX 或 AL 传送信息,不影响标志位。 (1) IN(Input)输入指令 长格式为: IN AL,PORT (字节操作) IN AX,PORT (字操作) 执行的操作:(AL)<-- (PORT) (字节操作) (AX)<-- (PORT+1,PORT) (字操作) 短格式为: IN AL,DX (字节操作) IN AX,DX (字操作) 执行的操作:(AL)<-- ((DX)) (字节操作) (AX)<-- ((DX)+1,(DX)) (字操作) (2)OUT(Output)输出指令 长格式为: OUT PORT,AL (字节操作) OUT PORT,AX (字操作)
汇编语言复习题(2)
汇编语⾔复习题(2)汇编语⾔复习题第2章8086CPU寄存器的结构及使⽤1.8086CPU由指令执⾏部件EU和总线接⼝部件BIU两部分组成。
其中EU的功能是控制和执⾏指令,主要由算术逻辑部件ALU、EU控制部件、8个16位寄存器和⼀个标志寄存器FLAGS组成。
BIU的功能是从存储器预取指令和数据,以及所有EU需要的总线操作,实现CPU与存储器和外设间信息传递。
BIU由指令队列、指令指针寄存器、段寄存器、地址加器组成。
2.Intel8086CPU共有14个16位寄存器,它们分别是通⽤寄存器8个即AX、BX、CX、DX、SP、BP、SI、DI,其中能⽤作寄存器间接寻址的寄存有BX、BP、SI和DI,控制寄存器2个即IP、PSW,段寄存器4个即DS、SS、CS和ES它们的含义分别是:其中在编程过程中程序的段基值由汇编程序装⼊的段寄存器是SS和CS,由编程者⽤汇编指令将段基值装⼊的段寄存器是DS 和ES,其具体指令是MOV AX,数据段段/附加数据段名,MOV DS/ES,AX,编程⼈员不能⽤指令去取其值或给其设置给定值的寄存器是IP,但是可以通过某些指令的执⾏⽽⾃动修改其内容,如JMP NEXT指令的功能是将⽬的地址的偏移量送⼊IP。
3.PSW是程序状态字寄存器⼜称为标志寄存器,⽤来反映微处理器在程序运⾏时的某些状态,其中的6个状态标志位分别是OF、SF、ZF、AF、PF和CF,反映了刚执⾏完算术或逻辑运算指令后的某些特征。
三个控制标志位是DF即⽅向标志、IF即中断标志位和TF陷阱标志。
如两个8位的⼆进制数相加其状态标志位中各标志的值是多少?10110101+10011011。
4.8086CPU数据总线16根地址总线是20根能访问的最⼤存储空间是1MB。
第3章存储器的分段1.在8086CPU中存储器的编址原则是按字节编址即每⼀个字节单元是⼀个存储器地址,在源程序中⽤常⽤⼗六进制数或符号来表⽰⼀个存储单元的地址。
寻址方式
8086CPU的寻址方式 8086CPU的寻址方式
寻 址:寻找操作数或操作数的地址 寻址方式: 寻址方式:寻找操作数地址的方法
8086指令系统 指令系统
操作数的位置 在指令中 在寄存器中 在存储器中 在I/O端口中 I/O端口中
操作数名称 立即数 寄存器操作数 存储器操作数 I/O操作数 I/O操作数
1011 1000 1100 0111 0000 0101B
汇编指令格式
用符号来表示操作码和地址码。格式: 用符号来表示操作码和地址码。格式: 标号: 标号: 操作码助记符 操作数助记符 ;注释
8086指令系统 指令系统
操作码:用助记符表示,执行一种操作,如传送、运算、移位、跳转等操作。 操作码:用助记符表示,执行一种操作,如传送、运算、移位、跳转等操作。 操作数: 各种操作的对象, 可以是具体的数值、 寄存器或存储器地址, 可有 操作数 : 各种操作的对象 , 可以是具体的数值 、 寄存器或存储器地址 , 0/1/2个操作数。操作数和操作码之间应用空格或制表符隔开。 个操作数。 个操作数 操作数和操作码之间应用空格或制表符隔开。 标号:用符号表示存放该条指令的存储器地址,符号后加冒号。 标号:用符号表示存放该条指令的存储器地址,符号后加冒号。 注释:以分号为首,对该条指令进行说明。 注释:以分号为首,对该条指令进行说明。 •双操作数指令 双操作数指令 ADD SUB 目的操作数 CX,1 , AX,1 , 源操作数 INC DEC •单操作数指令 单操作数指令 CX AX •无操作数指令 无操作数指令 STC CLI
操作码:说明指令的性质与功能。 功能。 操作码:说明指令的性质与功能 地址码:参与运算的操作数或存放操作数的地址。 地址码:参与运算的操作数或存放操作数的地址 操作数或存放操作数的地址。 分固定长度和可变长度。X86系列 分固定长度和可变长度。X86系列CPU(CISC)采用可变长度,ARM(RISC) 系列CPU(CISC)采用可变长度,ARM(RISC) 和可变长度 采用固定长度。 采用固定长度。 8086CPU的机器指令长度为 8086CPU的机器指令长度为1~6个字节。 的机器指令长度为1 个字节。 如:汇编指令MOV AX,05C7H的机器指令编码为 汇编指令 , 的机器指令编码为B8C705H,转换成二进制为: ,转换成二进制为: 的机器指令编码为
计组第4章
CISC:
•复杂指令系统计算机。 •指令系统中指令数量多达几百条。
RISC:
•精简指令系统计算机。 •选取使用频率最高的简单指令,指令 条数少。
4.1.2 对指令系统性能的要求
一个完善的指令系统应满足如下 四方面的要求:
完备性 规整性
有效性
兼容性
完备性 是指用汇编语言编写各
种程序时,指令系统直接提 供的指令足够使用,而不必 用软件来实现。完备性要求 指令系统丰富、功能齐全、 使用方便。
《计算机组成原理》
第四章 指令系统
介绍几个基本概念
指令是指挥机器完成某种操作的命令。
指令系统是某台计算机能直接识别并正
确执行的所有指令的集合。
指令系统是表征一台计算机性能的重要
因素,是计算机软件与硬件的交界面。
主要内容
1. 2. 3. 4. 5. 指令系统的发展 指令的格式 寻址方式 指令的分类和功能 典型指令系统的模型
操作操作数指令操作码寄存器指令操作数寄存器直接寻址操作码存储器指令操作数直接寻址操作码操作数存储器寄存器指令存储器指令操作码操作数寄存器间接寻址存储器间接寻址操作码操作数pc指令存储器存储器寄存器指令操作码操作数变址寻址pc存储器寄存器指令操作码操作数存储器寄存器指令操作码操作数变址相对寻址间接变址寻址16位偏移量dop其中i为间接寻址标志位x为寻址模式字段d位偏移量字段
有效性是指利用该指令系统所编
写的程序能够高效率地运行。 高效率主要表现:
•
•
空间:在程序占据存储空间小;
时间:执行速度快。
规整性包括指令系统的对称性、匀齐性、
指令格式和数据格式的一致性。
• 对称性:指在指令系统中所有的寄存器 和存储器单元都可同等对待,所有的指 令都可使用各种寻址方式; • 匀齐性:指一种操作性质的指令可以支 持各种数据类型; • 指令格式和数据格式的一致性:指指令 长度和数据长度有一定的关系,以方便 处理和存取。通常都是字节的整数倍。
80868088的指令与汇编语言.
JL/JNGE标号
SF≠OF
A<B
2
JLE/JNG标号
SF≠OF OR ZF=1
A<=B
3
JG/JNLE标号
SF=OF AND ZF=0
A>B
3
JGE/JNL标号
SF=OF
A>=B
2
第4章 8086/8088的指令与汇编语言
4.1 汇编语言的概念 4.2 指令格式及寻址方式 4.3 常用指令 4.4 汇编程序的结构 4.5 逻辑指令与移位指令 4.6 常用控制转移类指令 4.7 分支程序的设计方法 4.8 循环程序的设计方法 4.9 综合应用举例 4.10 其他指令介绍
CMP是一条专为条件转移指令设置的指令,通常会在 它的后面跟一条比较转移指令。 2.比较转移指令 虽然对两个数进行比较时有6种可能情况,但 8086/8088系统根据被比较的两个数是无符号数,还是有 符号数分别设置了比较转移指令。由于在实际工程应用中 ,几乎全是无符号数的比较,我们只介绍无符号数的比较 转移指令。 比较转移指令的格式及操作: JA OPR ; 大于(>),则转移到OPR所指的位置 JB OPR ; 小于(<),则转移到OPR所指的位置 JE OPR ; 等于(=),则转移到OPR所指的位置 JAE OPR ; 大于等于(≥),则转移到OPR所指的位置 JBE OPR ; 小于等于(≤),则转移到OPR所指的位置 JNE OPR ; 不等于(≠),则转移到OPR所指的位置
AL,VAL AL,VBL SVA2 AL,VBL SVA1 VCL,0 DONE VCL,1 DONE VCL,2
第4章 8086/8088的指令与汇编语言
4.6.4判断转移指令列表