寻址方式的分辨

寻址方式的分辨
寻址方式的分辨

汇编语言的寻址方式就是寻找操作数所在地址的方法,有七种:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址。

1、立即寻址:操作数在指令中,如:MOV AL,12H(源操作数)

2、寄存器寻址:操作数在指令中的寄存器中,如:MOV AL,BH(源操作数)

3、直接寻址:操作数所在存储器的有效地址在指令中,如:MOV AL,[12H](源操作数)

4、寄存器间接寻址:操作数所在存储器的有效地址在指令中的寄存器中,如:MOV AL,[BX](源操作数)

5、寄存器相对寻址:操作数所在存储器的有效地址为指令中的寄存器加位移量,如:MOV AL,[BX+12H]或MOV AL,DAVL[BP](源操作数)

6、基址变址寻址:操作数所在存储器的有效地址为指令中的基址寄存器加变址寄存器,如:MOV AL,[BX+SI]或MOV AL,[BX][SI](源操作数)

7、相对基址变址寻址:操作数所在存储器的有效地址为指令中的基址寄存器加变址寄存器,再加位移量,如:MOV AL,[BX+SI+12H]或MOV AL,DAVL[BX][SI](源操作数)。

MOV DAVL[BP],AX 中目的操作数是寄存器相对寻址,源操作数是寄存器寻址。

8086汇编寻址方式总结

寻址方式是汇编语言的重点和难点。请按如下思路学习:

1. 操作数可以存在什么地方?

⑴操作数存在于指令代码中,处理器译码时就立即获得了这个操作数,这就是立即(数)寻址方式。汇编指令中,这个立即数(操作数)以常量形式出现。

⑵操作数存在于处理器内部寄存器中,处理器从寄存器中获得这个操作数,这就是寄存器寻址方式。汇编指令中,这个寄存器操作数以寄存器名形式出现。

⑶操作数存在于主存中,处理器从主存单元获得这个操作数,这就是存储器寻址方式。汇编指令中,这个存储器操作数以主存地址形式出现。

2. 8086/8088处理器的主存地址在程序设计时采用逻辑地址。逻辑地址分成段地址和偏移地址两部分。

3. 存储器寻址方式表达存储器地址时,段地址在默认的或段超越前缀指令指定的段寄存器中,偏移地址被称为有效地址EA(Effective Address)。有效地址用中括号括起来。

4. 有多种获得偏移地址的方法,所以存储器寻址方式又分成多种寻址方式。

⑴有效地址直接给出,存在于指令代码中,就是直接寻址方式。

⑵有效地址存在寄存器中,就是通过寄存器的间接寻址方式。

⑶有效地址是两部分的和,一部分在寄存器中,另一部分直接给出(称为位移量),这就是寄存器相对寻址方式。

⑷有效地址是两部分的和,一部分在基址寄存器中(8086是B

X和BP),另一部分在变址寄存器中(8086是SI和DI),这就是基址

变址寻址方式。

⑸有效地址是三部分的和,第一部分在基址寄存器中(8086是BX和BP),第二部分在变址寄存器中(8086是SI和DI),第三部分直接给出(称为位移量),这就是相对基址变址寻址方式。

5. 区别各种寻址方式时,注意各自的特点。

只有一个常量,是立即(数)寻址方式;

只有一个寄存器名,是寄存器寻址方式;

其他则是存储器寻址方式。

用中括号括起一个常量是直接寻址方式;

用中括号括起一个寄存器名,是寄存器间接寻址方式用中括号括起一个寄存器名和一个常量是寄存器相对寻址方式;

6. 汇编语句中,还有其他形式出现,需要理解相应操作符才能做出正确判断。

例如,

直接写出变量名实际上是直接寻址方式;

变量名加减一个常量还是直接寻址方式;

变量名和一个寄存器则是寄存器相对寻址方式;

利用offset后跟一个变量名则是立即数寻址方式。

寻址方式及指令系统习题与解答

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

计算机组成原理试卷A卷答案

华侨大学2012—2013学年第一学期期末考试 《计算机组成原理》考试试卷(A卷) 学院课程名称考试日期 姓名专业学号 一、选择题(本大题共15小题,每小题2分,共30分)) 1、完整的计算机系统应包括_______。 A.CPU和主存B.外部设备和主机 C.主机和实用程序D.配套的硬件系统和软件系统 2、有些计算机将一部分软件永恒地存于只读存储器中,称之为_______。 A.硬件B.软件C.固件D.辅助存储器 3、冯·诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU区分它们的依据是_______。 A.指令操作码的译码结果B.指令和数据的寻址方式 C.指令周期的不同阶段D.指令和数据所在的存储单元 4、浮点数加减运算过程一般包括对阶、尾数运算、规格化、舍入和溢出判断等步骤。设浮点数的阶码和尾数都采用补码表示,且位数分别为5位和7位(均含2位符号位)。若有两个数X=27*29/32、Y=25*5/8,则浮点加法计算X+Y的最终结果是_____。 A.00111 1100010 B.00101 0001000 C.01000 0010001 D.发生溢出 5、下列关于RISC的叙述中,错误的是_______。 A.RISC普遍采用微程序控制器 B.RISC大多数指令在一个时钟周期内完成 C.RISC的内部通用寄存器数量相对CISC多 D.RISC的指令数、寻址方式和指令格式种类相对CISC少 6、在微机中,系统日期、硬盘参数与计算机配置信息等均存储在_______。 A.Cache B.ROM C.EPROM D.CMOS 7、相对于微程序控制器,硬布线控制器的特点是_______。 A.指令执行速度慢,指令功能的修改和扩展容易 B.指令执行速度慢,指令功能的修改和扩展困难 C.指令执行速度快,指令功能的修改和扩展容易 D.指令执行速度快,指令功能的修改和扩展困难 8、下列有关RAM和ROM的叙述中,正确的是_______。 ① RAM是易失性存储器,ROM是非易失性存储器 ② RAM和ROM都是采用随机存取方式进行信息访问 ③ RAM和ROM都可用做Cache ④ RAM和ROM都需要进行刷新 A.仅①②B.仅②③C.仅①②③D.仅②③④

实验7 寻址方式在结构化数据访问中的应用

计算机学院实验报告 课程汇编语言 实验名称实验7 寻址方式在结构化数据访问中的应用 专业计算机科学与技术 2018年 12 月 24 日 一、实验目的 1.定位内存单元的寻址方式汇总 2.寻址方式的综合应用

3.转移指令的分类和原理 4.熟悉在显存中编程的方法 二、实验内容及要求 ( 一) 寻址方式的汇总及综合应用 1.定位内存单元的寻址方式有几种,并举例说明。 2.寻址方式在结构化数据访问中的应用。 Power idea 公司从 1975 年成立一直到 1995 年的基本情况如下。 年份收入 ( 千美元 )雇员人均收入 ( 千美元 ) 1975163? 1976227? 19773829? 1978135613? 1979239028? 1980800038? 1995593700017800? 下面的程序中,已经定义好了这些数据: assume cs:codesg data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995' ;年份 dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ; 公司总收入 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 ;公司雇员人数 data ends table segment db 21 dup('year summ ne ??') table ends

作业习题 寻址方式和指令

寻址方式和指令习题 一、选择题 1、MOVX A,@DPTR指令中源操作数的寻址方式是() (A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 2、ORG 0003H LJMP 2000H ORG 000BH LJMP 3000H 当CPU响应外部中断0后,PC的值是() (A)0003H (B)2000H (C)000BH (D)3000H 3、执行PUSH ACC指令,MCS-51完成的操作是() (A)SP+1 SP (ACC)(SP)(B)(ACC)(SP)SP-1 SP (C)SP-1 SP (ACC)(SP) (D)(ACC)(SP)SP+1 SP 4、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=() (A)2000H (B)2001H (C)2002H (D)2003H 5、51执行完MOV A,#08H后,PSW的哪一位被置位() (A)C (B)F0 (C)OV (D)P 6、下面条指令将MCS-51的工作寄存器置成3区() (A)MOV PSW,#13H (B)MOV PSW,#18H (C)SETB PSW.4 CLR PSW.3 (D) SETB PSW.3 CLR PSW.4 7、执行MOVX A,@DPTR指令时,MCS-51产生的控制信号是()(A)/PSEN (B)ALE (C)/RD (D)/WR 8、MOV C,#00H的寻址方式是() (A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址 9、ORG 0000H AJMP 0040H ORG 0040H MOV SP,#00H 当执行完上面的程序后,PC的值是()

汇编实验报告一 熟悉7种寻址方式

电子信息工程学系实验报告——适用于计算机课程课程名称:IBM-PC汇编语言程序设计 实验项目名称:熟悉7种寻址方式实验时间: 班级:姓名:学号: 一、实验目的: 掌握debug命令,熟悉7种寻址方式。 二、实验环境: ASM轻松汇编 三、实验内容: 1、上机输入以下程序: data segment x db 01,02 y db ?,? z db ?,? w dw 1234h data ends code segment main proc far assume cs:code,ds:data start: push ds xor ax,ax push ax mov ax,data mov ds,ax mov dx,1234h -----无有效地址 mov cl,ds:[0000h] -----0000h mov si,0000h mov di,0002h mov al,[si] ----0000h mov [di],al ----无有效地址 add si,1 add di,1 mov al,[si] mov [di],al mov si,0000h mov di,0000h mov al,x[si] mov y[di],al 成绩: 指导教师(签名):

add si,1 add di,1 mov al,x[si] -----0001h mov y[di],al mov si,0000h mov di,0000h mov bx,0000h mov bp,0004h mov al,[bx][si] ----0000h mov ds:[bp][di],al add si,1 add di,1 mov al,[bx][si] mov ds:[bp][di],al ret main endp code ends end start 2、写出上面汇编程序中字体为红色的指令的源操作数的寻址方式以及源操作数的有效地址。 指令寻址方式有效地址mov dx,1234h立即寻址方式无有效地址mov cl,ds:[0000h]直接寻址方式0000h mov al,[si]寄存器间接寻址方式0000h mov [di],al寄存器寻址方式无有效地址 mov al,x[si] 寄存器相对寻址方式0001h mov al,[bx][si]基址变址寻址方式0000h 画图说明数据段中变量所分配的存储空间及初始化的数据值。 14F2:0000 0001 0002 0003 0004 0005 0006 0007 01 02 01 02 00 00 34 12

计算机组成原理练习答案

计算机组成原理练习3 一、单项选择题 1. 设寄存器内容为80H,若它对应的真值是– 127,则该机器数是。 A. 原码 B. 补码 C. 反码 D. 移码 2. 若浮点数用补码表示,则判断运算结果是否为规格化数的方法是______。 A. 阶符与数符相同为规格化数; B. 阶符与数符相异为规格化数; C. 数符与尾数小数点后第一位数字相异为规格化数; D. 数符与尾数小数点后第一位数字相同为规格化数。 3. 设机器数字长为32位,一个容量为16MB的存储器,CPU按半字寻址,其寻址范围是。 A. 224 B. 223 C. 222 D. 221 4. 在中断接口电路中,向量地址可通过送至CPU。 A. 地址线 B. 数据线 C. 控制线 D. 状态线 5. 在程序的执行过程中,Cache与主存的地址映象是由。 A. 程序员调度的; B. 操作系统管理的; C. 由程序员和操作系统共同协调完成的; D. 硬件自动完成的。 6. 总线复用方式可以______。 A. 提高总线的传输带宽; B. 增加总线的功能; C. 减少总线中信号线的数量; D. 提高CUP利用率。 7. 下列说法中正确的是。 A. Cache与主存统一编址,Cache的地址空间是主存地址空间的一部分; B. 主存储器只由易失性的随机读写存储器构成; C. 单体多字存储器主要解决访存速度的问题; D. Cache不与主存统一编址,Cache的地址空间不是主存地址空间的一部分。 8. 在采用增量计数器法的微指令中,下一条微指令的地址______。 A. 在当前的微指令中; B. 在微指令地址计数器中; C. 在程序计数器; D. 在CPU中。 9. 由于CPU内部操作的速度较快,而CPU访问一次存储器的时间较长,因此机器周期通常由______来确定。 A. 指令周期; B. 存取周期; C. 间址周期; D. 执行周期。 10. RISC机器______。 A. 不一定采用流水技术; B. 一定采用流水技术; C. CPU配备很少的通用寄存器; D. CPU配备很多的通用寄存器。 11. 在下列寻址方式中,寻址方式需要先计算,再访问主存。 A. 立即; B. 变址; C. 间接; D. 直接。 12. 在浮点机中,判断补码规格化形式的原则是______。 A. 尾数的第一数位为1,数符任意; B. 尾数的符号位与第一数位相同;

8086汇编语言指令的寻址方式有哪几类

1. 8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 寄存器寻址最快 7. 下面这些指令哪些是正确的?哪些是错误的?如是错误的,请说明原因。 XCHG CS , AX ;不能修改CS MOV [BX] , [1000] ;不能在两个内存单元之间直接进行数据传送 XCHG BX , IP ;不能用名字直接访问IP PUSH CS POP CS ;不允许直接修改CS值 IN BX , DX ;输入数据必须使用累加器AL或AX MOV BYTE [BX] , 1000 ;格式错误,且超范围,应为MOV word PTR [BX],1000 MOV CS , [1000];不允许直接修改CS值 20.带参数的返回指令用在什么场合?设栈顶地址为3000H,当执行RET 0006后,SP的值为多少? 利用堆栈传递参数时使用;对于近调用SP=3008H,对于远调用SP=300AH 27.设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶地址为多少?当执行 PUSH BX指令后,栈顶地址和栈顶2个字节的内容分别是什么? 栈顶地址:SS:SP,物理地址为:2FF00H;PUSH 完以后栈顶地址为:SS:SP=2010:FDFEH,即物理地址为:2FEFEH,内容为:57H 34H(由低地址到高地址) B P7 5. 设(DS)=3000H,(BX)=1100H,(CS)=0062H,(S1)=0002H,(31100H)=52H, (31101H)=8FH,(31162H)=6BH,(31163H)=99H,(31103H)=F6H, (32200H)=AAH,(32201H)=B6H,(32800H)=55H,(32801H)=77H,给出下列各指令执行后AX寄存器的内容: (1) MOV AX,BX (2) MOV AX,[BX] (3) MOV AX,4200H (4) MOV AX,[2800H] (5) MOV AX,1100H[BX] (6) MOV AX,[1160H+SI] 9. 分别执行下列各指令组,写出AX的内容: (1) MOV AX,93A4H NEG AX 73A4-8c5c,e689-1977 (AX)=6C5CH (2) XY DW "AB" MOV AX,XY (AX)=4142H (3) MOV AX,2B7EH MOV CX,4DB5H ADD AX,CX (AX)=7933H (4) XA DW 0BD57H MOV AX,0FBCDH AND AX,XA (AX)=B945H (5) STC MOV BX, 0B69FH MOV AX, 43A2H SBB AX, BX

单片机原理与应用练习题3答案

练习题3答案 1. 简述下列基本概念:指令,指令系统,机器语言,汇编语言。 答:指令是单片机CPU执行某种操作的命令。 指令系统是一台计算机所能执行的指令集合。 机器语言即二进制代码语言,是计算机可以直接识别。 汇编语言是用助记符、字符串和数字等来表示指令的程序语。 2. 简述A T89S51单片机的指令格式 答:该单片机的指令由两部分组成,即操作码和操作数。操作码用来规定指令进行什么操作,而操作数则是指令操作的对象,操作数可能是一个具体的数据,也可能是指出到哪里取得数据的地址或符号。指令格式一般为: [ 标号:] 操作码 [操作数1][,操作数2][,操作数3] [;注释] 3. 简述A T89S51的寻址方式和所能涉及的寻址空间 答:共有7种寻址方式,见表3-2。 分别是:(1)寄存器寻址:寻址范围为通用寄存器组,共4组32个,但只能使用当前寄存器 组,因此使用前需要通过对PSW种的RS1、RS0位的状态进行设置;(2)直接寻址:寻址范围为内部RAM,包括低128位用户RAM区和高128位专用寄存器;(3)寄存器间接寻址:寻址范围为内部RAM低128位,外部RAM 64KB(低256单元可以使用DPTR和R0、R1作为间接寻址寄存器,而其他单元只能用DPTR作为间接寻址寄存器);(4)立即寻址:直接给出立即数,不涉及寻址空间;(5)变址寻址:只对程序寄存器进行寻址;(6)相对寻址:以PC的内容为基值,加上指令机器代码中‘相对地址’形成新的PC值转移;(7)位寻址:寻址空间包括内部RAM位寻址区(20~2FH)和专用寄存器的可寻址位。 4. 要访问片外程序存储器和片外数据存储器,应采用哪些寻址方式? 答:访问片外程序存储器采用变址寻址方式,片外数据存储器采用寄存器间接寻址方式,且用DPTR可以访问64KB,而用R0或者R1只可访问低256字节。 5. 在AT89S51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请分析下面各是什么指令,说明源操作数的寻址方式及按顺序执行每条指令后的结果。 答:

第六章_寻址方式和指令系统

1

第 6章 寻址方式和汇编指令 第6章
6.1、寻址方式 6.2、汇编语言指令集 6.3、汇编源程序

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
▲ 汇编指令是可执行指令,每条指令对应一条机器 码,用以控制处理器中的执行部件进行各种操 作。 ▲ TMS320F281X系列的汇编指令有150多条。 ▲ 它们支持各种信号处理运算,同时也提供了应用 中所需要的多级处理和过程控制功能。 ▲ 寻址方式是指寻找指令中操作数地址的方式。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
TMS320C28x指令集采用7种存储器寻址方式: ▲ 直接寻址方式 ▲ 堆栈寻址方式 ▲ 间接寻址方式 ▲ 寄存器寻址方式 ▲ 数据/程序/IO空间立即寻址方式 ▲ 程序空间间接寻址 ▲ 字节寻址方式

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
F2812 的大多数指令利用操作码中的8位字段来选择寻 址方式和对寻址方式进行修改.在 F2812 指令系统中,这个8 位字段用于以下寻址方式: (1)loc16 。 为16位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
(2)loc32 。 为32位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
以上7种寻址方式都与“loc16/loc32”组合起来使用。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
寻址方式选择位
由 于 F2812 提 供 了 多 种 寻 址 方 式 , 因 此 用 寻 址 方 式 选 择 位 ( AMODE )来选择8位字段( loc16/loc32 )的解码。该 位属于状态寄存器ST1。寻址方式可以大致归类如下: ▲ AMODE=0——该方式是复位后的默认方式,也是F2812的C/C++编译
器使用的方式。这种方式与C2xLP CPU的寻址方式不完全兼容。数据页指针 偏移量是6位(在C2xLP CPU中是7位),并且不支持所有的间接寻址方式。
▲ AMODE=1——该方式包括的寻址方式完全与C2xLP 器件的寻址方式
兼容。数据页指针的偏移量是7位并支持所有C2xLP 支持的间接寻址方式。
对与loc16或者loc32字段,其可用的寻址方式总结如P375所示

课后习题三(第三、六、八、九章)

课后习题三(第三、六、八、九章) 1、CPU是指( B ) A. 控制器 B. 运算器和控制器 C. 运算器、控制器和主存 D. 运算器、控制器、主存和I/O 2、指令系统中采用不同寻址方式的目的主要是( B ) A. 可降低指令译码难度 B. 缩短指令字长、扩大寻址空间、提高编程灵活性 C. 实现程序控制 D. 提高指令执行速度 3、零地址运算指令在指令格式中不给出操作数地址,它的操作数来源自( C ) A. 立即数和栈顶 B. 暂存器 C. 栈顶或隐含约定的位置 D. 存储器 4、单地址指令中,为完成两个数的算术运算,除地址译码指明的一个操作数外,另一个数常采用( C ) A. 堆栈寻址方式 B. 立即寻址方式 C. 隐含寻址方式 D. 基址寻址方式 5、二地址指令中,操作数的物理位置安排,描述正确的是( C ) A. 两个主存单元(且依然在现指令系统中采用) B. 栈顶和次栈顶 C. 主存单元或寄存器 D. 两个同时为寄存器不允许使用 6、操作数在寄存器中的寻址方式称为( C )寻址 A. 直接 B. 立即 C. 寄存器直接 D. 寄存器间接 7、寄存器间接寻址方式中,操作数在( C ) A. 通用寄存器 B. 堆栈 C. 主存单元 D. I/O外设中 8、变址寻址方式中,操作数的有效地址是( C ) A. 基址寄存器内容加上形式地址 B. 程序计数器内容加上形式地址 C. 变址寄存器内容加上形式地址 D. 形式地址本身 9、采用基址寻址可扩大寻址范围,且( B ) A. 基址寄存器内容由用户确定,在程序执行过程中一般不可变 B. 基址寄存器内容由操作系统确定,在程序执行过程中一般不可变 C. 基址寄存器内容由用户确定,在程序执行过程中可随意变化 D. 基址寄存器内容由操作系统确定,在程序执行过程可随意变化 10、变址寻址和基址寻址的有效地址形成方式类似,但是( C ) A. 变址寄存器内容在程序执行过程中是不可变的 B. 在程序执行过程中,变址寄存器和基址寄存器的内容可以随意变化 C. 在程序执行过程中,变址寄存器的内容可随意变化 D. 以上均不对 11、堆栈寻址中,设A为累加器,SP为栈顶指针,[SP]为其指向的栈顶单元,如果进栈的动作顺序是(SP)-1→SP,(A)→[SP],那么出栈的动作顺序是( A ) A. [SP] →(A),(SP)+1→SP B. (SP)+1→SP,[SP] →(A) C. (SP)-1→SP,[SP] →(A) D. [SP] →(A),(SP)-1→SP

单片机寻址方式

51单片机的寻址方式 寻址方式:指定操作数所在单元的方法。 在我们学习的8051单片机中,有7种寻址方法,下面我们将逐一进行分析。 一、立即寻址 用“#”作前缀 MOV A,#20H 在这种寻址方式中,指令多是双字节的。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如: MOV A,#3AH 这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。 MOV DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR 是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。 二、直接寻址

指令中直接给出操作数的地址。 MOV A,30H;这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。 MOV 30H,DPH 在80C51单片机中,直接地址只能用来表示内部数据存储器、位地址空间以及特殊功能寄存器,具体的说就是: 1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。 我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH 形式给出。 2、位寻址区。20H-2FH地址单元。 3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是此指令也可以以 MOV 80H,#85H的形式表述。

课后习题六(第七章)

课后习题(第七章) 1、为了缩短指令中地址码的位数,应采用( B )寻址。 A、立即数 B、寄存器 C、直接 D、间接 2、指令系统中采用不同寻址方式的目的主要是( B ) A. 可降低指令译码难度 B. 缩短指令字长、扩大寻址空间、提高编程灵活性 C. 实现程序控制 D. 提高指令执行速度 3、零地址运算指令在指令格式中不给出操作数地址,它的操作数来源自( C ) A. 立即数和栈顶 B. 暂存器 C. 栈顶或隐含约定的位置 D. 存储器 4、单地址指令中,为完成两个数的算术运算,除地址译码指明的一个操作数外,另一个数常采用( C ) A. 堆栈寻址方式 B. 立即寻址方式 C. 隐含寻址方式 D. 基址寻址方式 5、二地址指令中,操作数的物理位置安排,描述正确的是( C ) A. 两个主存单元(且依然在现指令系统中采用) B. 栈顶和次栈顶 C. 主存单元或寄存器 D. 两个同时为寄存器不允许使用 6、操作数在寄存器中的寻址方式称为( C )寻址 A. 直接 B. 立即 C. 寄存器直接 D. 寄存器间接 7、寄存器间接寻址方式中,操作数在( C ) A. 通用寄存器 B. 堆栈 C. 主存单元 D. I/O外设中 8、变址寻址方式中,操作数的有效地址是( C ) A. 基址寄存器内容加上形式地址 B. 程序计数器内容加上形式地址 C. 变址寄存器内容加上形式地址 D. 形式地址本身 9、采用基址寻址可扩大寻址范围,且( B ) A. 基址寄存器内容由用户确定,在程序执行过程中一般不可变 B. 基址寄存器内容由操作系统确定,在程序执行过程中一般不可变 C. 基址寄存器内容由用户确定,在程序执行过程中可随意变化 D. 基址寄存器内容由操作系统确定,在程序执行过程可随意变化 10、变址寻址和基址寻址的有效地址形成方式类似,但是( C ) A. 变址寄存器内容在程序执行过程中是不可变的 B. 在程序执行过程中,变址寄存器和基址寄存器的内容可以随意变化 C. 在程序执行过程中,变址寄存器的内容可随意变化 D. 以上均不对 11、堆栈寻址中,设A为累加器,SP为栈顶指针,[SP]为其指向的栈顶单元,如果进栈的动作顺序是(SP)-1→SP,(A)→[SP],那么出栈的动作顺序是( A ) A. [SP] →(A),(SP)+1→SP B. (SP)+1→SP,[SP] →(A) C. (SP)-1→SP,[SP] →(A) D. [SP] →(A),(SP)-1→SP 12、设变址寄存器为X,形式地址为D,某机具有先变址再主存间址的寻址方式,则这种寻

寻址方式和指令系统

《微机原理》复习思考题第3章 8086的寻址方式和指令系统 3.1 8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 3.2 直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段 寄存器指出段地址,指令中应如何表示? 3.3 在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么,段地址如何确定? 3.4 用寄存器间接寻址方式时,BX,BP,SI,DI分别针对什么情况来使用?这四个寄存器组合 间接寻址时,地址是怎样计算的?举例进行说明。 3.5 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的具体操作: MOV BYTE PTR [BP], 2000 MOV WORD PTR [BX], 2000 3.6 使用堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内容操作数时分别要注 意什么问题? 3.7 下面这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。 XCHG CS, AX MOV [BX], [1000] XCHG BX, IP PUSH CS POP CS IN BX, DX MOV BYTE[BX], 1000 MOV CS, [1000] 3.8 8086系统中,当对SS和SP寄存器的值进行修改时,有什么特殊规定?这样做的原因是什么?[解答] 凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。 3.9 以下是格雷码的编码表 0——0000 1——0001 2——0011 3——0010 4——0110 5——0111 6——0101 7——0100 8——1100 9——1101 请用换码指令和其他指令设计一个程序段,实现格雷码往ASCII的转换。 3.10 用加法指令设计一个简单程序,实现两个16位十进制数的加法,结果放在被加数单元。 3.11 为什么用增量指令或减量指令设计程序时,在这类指令后面不用进位标志CF作为判断依 据?

七种寻址方式

七种寻址方式 一、立即寻址方式 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。 立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如: MOV AH,80H ADD AX,1234H MOV ECX,123456H MOV B1,12H MOV W1,3456H ADD D1,32123456H 其中:B1、W1和D1分别是字节、字和双字单元。 以上指令中的第二操作数都是立即数, 立即数寻址方式通常用于对通用寄存器或内存单元赋初值。 二、寄存器寻址方式 指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。 指令中可以引用的寄存器及其符号名称如下: 8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等; 16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等; 32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。 寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。 1、源操作数是寄存器寻址方式 如:ADD VARD,EAX ADD VARW,AX MOV VARB,BH等。 其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。在第4章将会学到如何定义它们。 2、目的操作数是寄存器寻址方式 如:ADD BH,78h ADD AX,1234h MOV EBX,12345678H等。 3、源和目的操作数都是寄存器寻址方式 如:MOV EAX,EBX MOV AX,BX MOV DH,BL等。 三、直接寻址方式 指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。 在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。 例:假设有指令:MOV BX,[1234H],在执行时,(DS)=2000H,内存单元21234H 的值为5213H。问该指令执行后,BX的值是什么? 解:根据直接寻址方式的寻址规则,把该指令的具体执行过程用下图来表示。

寄存器与7种寻址方式

一、寄存器 总共有14个16位寄存器,8个8位寄存器 通用寄存器: 数据寄存器: AH(8位) AL(8位) AX(16位) (AX和AL又称累加器) BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器) CH(8位) CL(8位) CX(16位) (CX用于字符串操作,控制循环的次数,CL 用于移位) DH(8位) DL(8位) DX(16位) (DX一般用来做32位的乘除法时存放被除数或者保留余数) 指针寄存器: SP 堆栈指针(存放栈顶地址) BP 基址指针(存放堆栈基址偏移) 变址寄存器:主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移, 即作为存储器(短)指针使用。作为通用寄存器,它们可以保存16位算术逻辑运算中的操 作数和运算结果,有时运算结果就是需要的存储单元地址的偏移. SI 源地址(源变址寄存器) DI 目的地址(目的变址寄存器) 控制寄存器: IP 指令指针 FLAG 标志寄存器 ①进位标志CF,记录运算时最高有效位产生的进位值。

②符号标志SF,记录运算结果的符号。结果为负时置1,否则置0。 ③零标志ZF,运算结果为0时ZF位置1,否则置0。 ④溢出标志OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1,否则置0。 ⑤辅助进位标志AF,记录运算时第3位(半个字节)产生的进位值。 ⑥奇偶标志PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。 段寄存器 CS 代码段IP DS 数据段 SS 堆栈段SP BP ES 附加段 二、七种寻址方式: 1、立即寻址方式: 操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。 这种操作数成为立即数。立即数可以是8位的,也可以是16位的。 例如: 指令: MOV AX,1234H 则: AX = 1234H 2、寄存器寻址方式: 操作数在CPU内部的寄存器中,指令指定寄存器号。 对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。对于8位操作数,寄存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。 这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数 因而可以取得较高的运算数度。

指令与寻址方式习题

指令与寻址方式习题解答 1.试分别说明下列各指令中源操作数和目的操作数使用的寻址方式:(1)AND AX,0FFH (2)AND BL,[OFFH] (3)MOV DS,AX (4)CMP [SI],CX (5)MOV DS:[0FFH],CL (6)SUB [BP][SI],AH (7)ADC AX,0ABH[BX] (8)OR DX,-35[BX][DI] (9)PUSH DS (10)CMC 答:目的操作数源操作数 (1)寄存器直接寻址立即数寻址 (2)寄存器直接寻址直接寻址 (3)寄存器直接寻址寄存器直接寻址 (4)寄存器间接寻址寄存器直接寻址 (5)直接寻址寄存器直接寻址 (6)基址变址寻址寄存器直接寻址 (7)寄存器直接寻址寄存器相对寻址 (8)寄存器直接寻址基址变址相对寻址 (9)无寄存器直接寻址 (10)隐含寻址 2.试分别指出下列各指令语句的语法是否有错,如有错,指明是什么错误。 (1)MOV [BX][BP],AX (2)TEST [BP],BL (3)ADD SI,ABH (4)AND DH,DL (5)CMP CL,1234H (6)SHR [BX][DI],3 (7)NOT CX,AX (8)LEA DS,35[SI] (9)INC CX,1 (10)P USH 45[DI] 答:(1)应将BP,BX其中之一该为SI或DI (2)正确 (3)ABH改为0ABH (4) (5)是字操作,CL改为CX (6)移位数大于1时,应用CL (7)NOT指令只有一个操作数 (8)LEA指令的源操作数应为一内存单元地址

(9)此指令不用指出1 (10)45改为45H 3.下面两条指令执行后,标志寄存器中CF,AF,ZF,SF和OF分别是什么状态? MOV DL,86 ADD DL,0AAH 答: 0101,0110 + 1010,1010 = 1,0000,0000 CF=1 AF=1 ZF=1 SF=1 OF=1 4.在8086/8088CPU中可用于作地址指针的寄存器有哪些? 答:有BX,CX,DX,BP,SI,DI (IP,SP,) 5.已知(DS)=09lDH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。下列各指令或程序段分别执行后的结果如何? (1)MOV CL,20H[BX][SI] (2)MOV [BP][DI],CX (3)LEA BX,20H[BX][SI] MOV AX,2[BX] (4)LDS SI,[BX][DI] MOV [SI],BX (5)XCHG CX,32H[BX] XCHG 20H[BX][SI],AX 答(1) (CX)=56F6H; (2) (09226H)=5678H; (3) (AX)=1E40H; (4) (1E4F6H)=0024H; (5) (09226H)=1234H,(AX)=5678H. 6.已知(SS)=09l 5H,(DS)=0930H,(SI)=0A0H,(DI)=1C0H,(BX)=80H,(BP)=470H。现有一指令“MOV AX,OPRD”,如源操作数的物理地址为095C0H,试用四种不同寻址方式改写此指令(要求上述每个已知条件至少要使用一次)。 答:(1)MOV AX,[BP] (2)MOV AX,[BP+DI+80H] (3)MOV AX,[DI+0100H] MOV AX,[SI+0220H] (4)MOV AX,[02C0H] 7.试按下列要求分别编制程序段: (1)把标志寄存器中符号位SF置‘1’。 (2)寄存器AL中高低四位互换。 (3)由寄存器AX,BX组成一个32位带符号数(AX中存放高十六位),试求这个数的负数。 (4)现有三个字节存储单元A,B,C。在不使用ADD和ADC指令的情况下,实现(A)+(B)=>C。 (5)用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变,如原来是偶数,则(CX)+1形成奇数)。 答:(1)MOV AH, 80H SAHF

7种寻址方式

七种寻址方式 1、(直接寻址方式) 指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。例:假设有指令:MOV BX, [1234H],在执行时,(DS)=2000H,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么?解:根据直接寻址方式的寻址规则,把该指令的具体执行过程用下图来表示。从图中,可看出执行该指令要分三部分: 由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H 相加,得存储单元的物理地址:21234H;取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。所以,在执行该指令后,BX的值就为5213H。由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。下面指令的目标操作数就是带有段前缀的直接寻址方式。 MOV ES:[1000H], AX 直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在64K字节的段内进行寻址。注意:立即寻址方式和直接寻址方式的书写格式的不同,直接寻址的地址要写在括号“[”,“]”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。试比较下列指令中源操作数的寻址方式(VARW是内存字变量): MOV AX, 1234H MOV AX, [1234H] ;前者是立即寻址,后者是直接寻址 MOV AX, VARW MOV AX, [VARW] ;两者是等效的,均为直接寻址 2、(寄存器间接寻址方式) 操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下:

指令格式及寻址方式

指令格式及寻址方式 一、指令格式 指令的表示方法称为指令格式,它包括指令的长度和指令内部信息的安排等内容。一条指令一船由两部分组成,即操作码和操作数。操作码用来规定指令进行什么操作,而操作效则表示指令操作的对象。操作数可以直接是一个数(立即数),也可以是一个数据所在的空间地址,即在执行指令时从指定的地址空间取出操作数。 单片机中的指令并不是固定的长度,对于不同的指令,指令的字节数不同。MC5—5l 单 片机用机器语言表示的指令格式按字节划分,有一字节指令、两字节指令和三字节指令三种。 1.一字节指令 一字节指令中的8位二进制代码既包含操作码的信息,也包含操作数的信息。在一字节指令中,有些指令的指令码中隐合着对某一寄存器的操作,NXP代理商无需再具体指定操作数。例如数 据指针DPTR加1指令;INC DPTR,其指令码为: 另外有些指令的操作数在通用寄存器中,由指令码中的rrr三位的不同编码来指定该 寄存器。例如:寄存器向氮加器A传送数据指令:MOV A,Rn,其指令码为: 其中,高5位表示操作内容——传送,最低三位rrr的不同二进制编码用来表示从哪一个寄 存器取数。 2.二字节指令。 二字节指令中的第一个字表尔操作码,第二个字节表示操作数,这里的操作数既可能是立即数,也可能是地址。其指令格式为: 3.三字节指令 三节节指令中,第一字节表示操作码,另两个字节是操作数,其指令格式为

绝大多数指令执行时都需要使用操作数,因此如何寻找存放操作数的单元地址和提取操作数就变得十分重要。Atmel代理所谓寻址方式就是如何找到存放操作数的地址,把操作数提取出来 的方法。 寻址方式与计算机的存储器空间结构有关,寻址方式越多,则计算机的功能越强,灵活性也越大,能更有效地处理各种数据,但指令系统也会相应的复杂。 MCS-51单片机共有七种寻址方式。下面分别加以介绍。 1.寄存器寻址 寄存器寻址是将所选定的工作寄存器组中的8个工作寄存器(R0—R7)的内容作为操 作数。指令操作码的低三位的不同组合分别代表R0—R7中的某一个。A、B、DPTR和C(位累加器)也能作为寄存器来寻址。例如: 这里源操作数和目标操作数均采用寄存器寻址.寄存器中的内容为操作数。 2.直接寻址 在直接寻址方式中、操作数由指令中的一个8位地址单元所指定。只有内部RAM中的00H~7FH地址单元和80H~FFH地址中的专用寄存器可直接寻址,且直接寻址是访问专 用寄存器的唯一方法。 采用直接寻址方式的指令是双字节指令,第一个字节是操作码,第二个字节是内部RAM的低128字节或专用寄存器的地址。例如: 此例中,源操作数采用直接寻址方式,表示把内部RAM中30H单元的内容送入A。指令代码为E5H、30H。 3.寄存器间接寻址 在寄存器间接寻址方式个,指令中给出的杏存器的内容为操作数的地址,而不是操作数本身。内部RAM和外部RAM都可以间接寻址。 当访问内部RAM或外部RAM的低256字节时,间址寄存器可以是选中寄存器组中的R0或R1,即内R0或R1间接给出操作数所在的地址‘ 当访问外部RAM时,16位间址寄存器只能使用16位数据指针寄存器DPTR,这时可对整个外部RAM空间(64KB)寻址。 PUSH和POP指令的执行也采用寄存器间接寻址,这时堆栈指针SP用作间址寄存 器。堆栈指针可驻留在内部RAM的任何地方;例如:

相关文档
最新文档