第二章-80x86的寻址方式

第二章-80x86的寻址方式
第二章-80x86的寻址方式

80x86的寻址方式

一、计算机中的指令由:操作码字段 + 操作数字段

操作码字段指示计算机所要执行的操作,操作数字段指出指令执行操作的过程中所需要的操作数

二、与数据相关的寻址方式

与数据相关的寻址方式是用来确定操作数地址从而找到操作数(一)立即数寻址方式

操作数直接放在指令中,紧跟在操作码之后。作为指令的一部分存放在代码段里

用来表示常数,经常用于给寄存器赋值

只能用于源操作数字段,不能用于目的操作数字段,且源操作数长度应该与目的操作数长度一致

如:Mov AL,5

执行后:(AL) = 05H

(二)寄存器寻址方式

操作数在寄存器中,指令指定寄存器号。

操作数就在寄存器中,不需要访问存储器取得操作数,因而有较高的运算速度

如:Mov AX,BX ( (BX) = 05H )

执行后:(AX) = 05H BX内容保持不变

有效地址:

在80x86里,把操作数的偏移地址成为有效地址(EA)

有效地址可以由以下四种成分组成:

1.位移量,存放在指令中的一个8位、16位或32位的数,但它

不是立即数,而是一个地址

2.基址,存放在基址寄存器中的内容。是有效地址中的基址部分,通常用来指向数据段中数组或字符串的首地址

3.变址,存放在变址寄存器中的内容。通常用来访问数组中的某个元素或字符串中的某个字符

4.比例因子,是386及其后继机型新增加的寻址方式中的一个术语,其值可为1,2,4或8。可用变址寄存器中的内容乘以比例因子来取得变址值。对访问元素长度为2,4,8字节的数组特别有用有效地址的计算可以下式表示:

EA = 基址+(变址* 比例因子)+位移量(比例因子是固定值) 16/32位寻址时有效地址四种成分的组成

在以下三种情况下,不允许使用段跨越前缀:

1.串处理指令的目的串必须用ES段

2.PUSH指令的目的和POP指令的源必须用SS段

3.指令必须存放在CS段中

注意:有关比例因子的三种组合只能用于80386及其后继机型。

默认段选择规则

(三)直接寻址方式

操作数的有效地址只包含位移量一种成分。其值存放在代码段中指令的操作码之后。位移量的值即操作数的有效地址。

(四)寄存器间接寻址方式

1.有效地址存储在某个寄存器中,操作数在存储器中

2.用于表格处理,执行完一条指令之后,只需要修改寄存器内容就可以取出表格的下一项

3.根据<默认段选择规则>表中规定,凡使用BP,ESP和EBP时,其默认段为SS段,其他寄存器的默认段为DS寄存器。

(五)寄存器相对寻址方式

1.操作数的有效地址为基址寄存器或变址寄存器的内容和指令中指定的位移量之和,所以有效地址由两种成分组成。

2.可用于表格处理,表格的首地址可设置为位移量,利用修改基址或变址寄存器的内容来取得表格中的值。

(六)基址变址寻址方式

1.操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,所以有效地址由两种成分组成。

2.适用于数组或者表格处理,首地址可存放在基址寄存器中,而用变址寄存器来访问数组中的各个元素,两个寄存器都可修改(七)相对基址变址寻址方式

1.操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和指令中指定的位移量之和,所以有效地址由三种成分组成。

2.常用于对二维数组的寻址

(八)以下三种寻址方式与比例因子有关,只能用在386及其后继机型,8086/80286不支持这几种寻址方式。

1.比例变址寻址方式

操作数的有效地址是变址寄存器的内容乘以指令中指定的比例因子再加上位移量之和,所以有效地址由三部分组成

2.基址比例变址寻址方式

操作数的有效地址是变址寄存器的内容乘以比例因子再加上基址寄存器的内容之和,所以有效地址由三种成分组成

3.相对基址比例变址寻址方式

操作数的有效地址是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上位移量之和,所以有效地址由四种成分组成

三、与转移地址有关的寻址方式

(一)段内直接寻址

1.转向的有效地址是当前IP寄存器的内容和指令中指定的8位或16位位移量之和

2.转移指令本身不会发生变化

3.适用于条件及无条件转移指令,用于条件转移指令时,位移量只允许8位(386及后继机型条件转移指令的位移量可为8位或32位)

4.无条件转移指令在位移量为8位时称为短跳转。(JMP SHORT QUEST)

无条件转移指令在位移量为16位时称为近跳转。(JMP NEAR

PTR PROGIA)

在汇编指令中,如果位移量为16位,则在符号地址前加操作符NEAR PTR。如果位移量为8位,则在符号地址前加操作符SHORT。

(二)段内间接寻址

1.转向有效地址是一个寄存器或是存储单元的内容,这个寄存器或存储单元的内容可以用数据寻址方式中除立即数以外的任何一种寻址方式取得,所得到的转向的有效地址用来取代IP寄存器的内容。

2.注意:这种寻址方式以及以下的两种段间寻址方式都不能用于条件转移指令。也就是说,条件转移指令只能使用段内直接寻址的8位位移量,而JMP和CALL指令则可以使用任何跳转方式。

3.段内间接寻址转移指令的汇编格式可以表示为

JMP BX

JMP WORD PTR[BP+TABLE]

其中WORD PTR又称为操作符(伪),用以指出其后的寻址方式所取得的转向地址是一个字的有效地址,也就是说它是一种段内转移。

4.以上两种寻址方式均为段内转移,所以直接把求得的转移的有效地址送到IP寄存器就可以了。

(三)段间直接寻址

1.指令中直接提供了转向段地址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的内容,用指令中指定的段地址取代CS寄存器的内容就完成了从一个段到另一个段的转移操作。

2.这种指令的汇编语言格式可表示为:

JMP FAR PTR NEXTROUTINT

其中,NEXTROUTINT为转向的符号地址,PAR FAR 则是表示段间转移的操作符。

(四)段间间接寻址

1.用存储器中的二个相继字的内容来取代IP和CS寄存器中的原始内容以达到段间转移约目的。这里存储单元的地址是由指令指定除立即数方式和寄存器方式以外的任何一种数据寻址方式取得,如下图所示。

2.这种指令的汇编语言格式可表示为:

JMP DWORD PTR[INTERS+BX]

其中,[INTERS+BX]说明数据寻址方式为直接变址寻址方式,DWORD PTR为双字操作符,

Ptr相当于显示声明,跳转到的地址以DWORD双字的形式访问。说明转向地址需要取双字为段间转移指令。

2.1.

3.6 以下几种情况不允许使用段超越前缀

1) 串处理指令的目的串必须用ES段

表2.2默认段选择规则

2.1.

3.7 “与数据相关的寻址方式”总结

3) 与转移地址有关的寻址方式的有效地址的组成表2.4 与转移地址有关的寻址方式的有效地址的组成

4) 8086中为了使指令字不要过长,规定双操作数指令的两个操作数中,只有一个使用存储器存储方式,这就是一个变量通常先送到寄存器的原因

5) 条件指令转移条件只能使用段内直接寻址的8位位移量

实验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

计算机组成原理知识点总结——详细版

计算机组成原理2009年12月期末考试复习大纲 第一章 1.计算机软件的分类。 P11 计算机软件一般分为两大类:一类叫系统程序,一类叫应用程序。 2.源程序转换到目标程序的方法。 P12 源程序是用算法语言编写的程序。 目标程序(目的程序)是用机器语言书写的程序。 源程序转换到目标程序的方法一种是通过编译程序把源程序翻译成目的程序,另一种是通过解释程序解释执行。 3.怎样理解软件和硬件的逻辑等价性。 P14 因为任何操作可以有软件来实现,也可以由硬件来实现;任何指令的执行可以由硬件完成,也可以由软件来完成。对于某一机器功能采用硬件方案还是软件方案,取决于器件价格,速度,可靠性,存储容量等因素。因此,软件和硬件之间具有逻辑等价性。 第二章 1.定点数和浮点数的表示方法。 P16 定点数通常为纯小数或纯整数。 X=XnXn-1…..X1X0 Xn为符号位,0表示正数,1表示负数。其余位数代表它的量值。 纯小数表示范围0≤|X|≤1-2-n 纯整数表示范围0≤|X|≤2n -1

浮点数:一个十进制浮点数N=10E.M。一个任意进制浮点数N=R E.M 其中M称为浮点数的尾数,是一个纯小数。E称为浮点数的指数,是一个整数。 比例因子的基数R=2对二进制计数的机器是一个常数。 做题时请注意题目的要求是否是采用IEEE754标准来表示的浮点数。 32位浮点数S(31)E(30-23)M(22-0) 64位浮点数S(63)E(62-52)M(51-0) S是浮点数的符号位0正1负。E是阶码,采用移码方法来表示正负指数。 M为尾数。P18 P18

2.数据的原码、反码和补码之间的转换。数据零的三种机器码的表示方法。 P21 一个正整数,当用原码、反码、补码表示时,符号位都固定为0,用二进制表示的数位值都相同,既三种表示方法完全一样。 一个负整数,当用原码、反码、补码表示时,符号位都固定为1,用二进制表示的数位值都不相同,表示方法。 1.原码符号位为1不变,整数的每一位二进制数位求反得到反码; 2.反码符号位为1不变,反码数值位最低位加1,得到补码。 例:x= (+122)10=(+1111010)2原码、反码、补码均为01111010 Y=(-122)10=(-1111010)2原码11111010、反码10000101、补码10000110 +0 原码00000000、反码00000000、补码00000000 -0 原码10000000、反码11111111、补码10000000 3.定点数和浮点数的加、减法运算:公式的运用、溢出的判断。 P63 已知x和y,用变形补码计算x+y,同时指出结果是否溢出。 (1)x=11011 y=00011 (2)x=11011 y=-10101 (3)x=-10110 y=-00001

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

寻址方式及指令系统习题与解答 计算机科学与工程学院黄洪波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.无溢出但有进位

微机原理作业答案

微机原理作业 1.8086C P U由哪两部分组成?它们的主要功能是什么? 答:8086CPU由总线接口单元(BIU)和指令执行单元(EU)组成。总线接口单元(BIU)的功能是:地址形成、取指令、指令排队、读/写操作数和总线控制。指令执行单元(EU)的功能是指令译码和指令执行。 2.微型计算机系统由微处理器、存储器和I/O接口等 组成。 3.8086CPU中的指令队列可存储6个字节的指令代码,当指令队列 至少空出 2 个字节时,BIU单元便自动将指令取到指令队列中; 4.8086系统中,1MB的存储空间分成两个存储体:偶地址存储体 和 奇地址存储体,各为512 字节。 5.8086系统中存储器采用什么结构?用什么信号来选中存储体? 答:8086存储器采用分体式结构:偶地址存储体和奇地址存储体,各为512K。用AO和BHE来选择存储体。当AO=0时,访问偶地址存储体;当BHE=0时,访问奇地址存储体;当AO=0,BHE=0时,访问两个存储体。 6.在8086CPU中,指令指针寄存器是 C 。 (A) BP (B) SP (C) IP (D) DI 7.8086CPU中的SP寄存器的位数是 B 。 (A) 8位(B) 16位(C) 20位(D) 24位 8.8086CPU中指令指针寄存器(IP)中存放的是 B 。 (A)指令(B)指令偏移地址(C)操作数(D)操作数偏移地址 9.若当前SS=3500H,SP=0800H,说明堆栈段在存储器中的物理地址(最 大),若此时入栈10个字节,SP内容是什么?若再出栈6个字节,SP为什么值?答:堆栈段的物理地址范围:35000H~357FFH

实验报告答案

实验2:MIPS指令系统和MIPS体系结构 一.实验目的 (1)了解和熟悉指令级模拟器 (2)熟悉掌握MIPSsim模拟器的操作和使用方法 (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解 (4)熟悉MIPS体系结构 二. 实验内容和步骤 首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言。(1)、启动MIPSsim(用鼠标双击MIPSsim.exe)。 (2)、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。 (3)、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。 可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一条指令、执行多条指令、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化。 (4)、选择“文件”->“载入程序”选项,加载样例程序 alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000000)。 (5)、查看“寄存器”窗口PC寄存器的值:[PC]=0x00000000。 (6)、执行load和store指令,步骤如下: 1)单步执行一条指令(F7)。 2)下一条指令地址为0x00000004,是一条有 (有,无)符号载入字节 (字节,半字,字)指令。 3)单步执行一条指令(F7)。 4)查看R1的值,[R1]= 0xFFFFFFFFFFFFFF80 。 5)下一条指令地址为0x00000008,是一条有 (有,无)符号载入字 (字节,半字,字)指令。 6)单步执行1条指令。 7)查看R1的值,[R1]=0x0000000000000080 。 8)下一条指令地址为0x0000000C ,是一条无 (有,无)符号载入字节 (字节,半字,字)指令。 9)单步执行1条指令。 10)查看R1的值,[R1]= 0x0000000000000080 。 11)单步执行1条指令。 12)下一条指令地址为0x00000014 ,是一条保存字 (字节,半字,字)指令。 13)单步执行一条指令。

计组实验二实验报告-80868088指令系统

HUNAN UNIVERSITY 课程实习报告 题目: 8086/8088指令系统 学生姓名 学生学号 专业班级计算机科学与技术2班 指导老师 完成日期2013年4月21日

一、实验目的 利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作吗编码对应的指令功能,得到8086/8088操作吗从00~FF所对应的的汇编指令的名字。并加以分析总结,形成你的关于8086/8088指令系统操作码编码方法的实验报告。 二、实验过程 1、编写C++程序,生成debug的输入文件(shuru.txt) 2、将shuru.txt复制到debug的根目录下,在debug界面输入如下指令“debug out.txt”,在debug的根目录下,生成了输出文本文件out.txt。 打开out.txt,对256条记录进行整理,如下所示。 3、固定前两位为00,将第二字节从00变为ff,观察汇编指令变化。编写C++程序如下: 4、将shuru2.txt复制到debug的根目录下,在debug界面输入如下指令“debug out2.txt”,在debug的根目录下,生成了输出文本文件out2.txt。

打开out2.txt,对256条记录进行分析。 三、256条记录 指令码汇编指令 ------------------------------------------------------------- 0B76:0100 0000 ADD [BX+SI],AL 0B76:0100 0100 ADD [BX+SI],AX 0B76:0100 0200 ADD AL,[BX+SI] 0B76:0100 0300 ADD AX,[BX+SI] 0B76:0100 0400 ADD AL,00 0B76:0100 050000 ADD AX,0000 0B76:0100 06 PUSH ES 0B76:0100 07 POP ES 0B76:0100 0800 OR [BX+SI],AL 0B76:0100 0900 OR [BX+SI],AX 0B76:0100 0A00 OR AL,[BX+SI] 0B76:0100 0B00 OR AX,[BX+SI] 0B76:0100 0C00 OR AL,00 0B76:0100 0D0000 OR AX,0000 0B76:0100 0E PUSH CS 0B76:0100 0F DB 0F 0B76:0100 1000 ADC [BX+SI],AL 0B76:0100 1100 ADC [BX+SI],AX 0B76:0100 1200 ADC AL,[BX+SI] 0B76:0100 1300 ADC AX,[BX+SI] 0B76:0100 1400 ADC AL,00 0B76:0100 150000 ADC AX,0000 0B76:0100 16 PUSH SS 0B76:0100 17 POP SS 0B76:0100 1800 SBB [BX+SI],AL 0B76:0100 1900 SBB [BX+SI],AX 0B76:0100 1A00 SBB AL,[BX+SI] 0B76:0100 1B00 SBB AX,[BX+SI] 0B76:0100 1C00 SBB AL,00 0B76:0100 1D0000 SBB AX,0000 0B76:0100 1E PUSH DS 0B76:0100 1F POP DS 0B76:0100 2000 AND [BX+SI],AL 0B76:0100 2100 AND [BX+SI],AX 0B76:0100 2200 AND AL,[BX+SI] 0B76:0100 2300 AND AX,[BX+SI] 0B76:0100 2400 AND AL,00 0B76:0100 250000 AND AX,0000

汇编实验报告一 熟悉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

汇编实验报告..

合肥工业大学计算机与信息学院 实验报告 课程:汇编语言程序设计专业班级: 学号: 姓名:

实验一Debug程序的使用 一.实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 二.实验内容 1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 三.实验过程和程序 1、启动DOS操作系统 2、运行https://www.360docs.net/doc/a47888908.html,程序(若当前盘为C) C:>DEBUG↙ – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令) 3、用“A”命令编辑和汇编源程序 –A ↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙ 186E:0116 ↙ 4、用“U”命令反汇编验证源程序 –U CS:0100↙ 186E:0100 A10002 MOV AX,[0200] 186E:0103 8B1E0202 MOV BX,[0202] 186E:0107 03060402 ADD AX,[0204] 186E:010B 131E0602 ADC BX,[0206] 186E:010F A30802 MOV [0208],AX 186E:0112 891E0A02 MOV [020A],BX 186E:0116 – 注意:

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

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所示

第一次实验报告

长春理工大学 汇编语言 预习报告 实验题目:DEBUG调试程序的使用 实验时间:2016年4 月 6 日实验地点:东三教912 班级:1405111 学号:140511114 姓名:王国伟

一.实验目的 a)学习使用DEBUG程序的各种命令。 b)利用DEBUG学习了解计算机取指令、执行指令的工作过程。 c)掌握用DEBUG调试自编程序的方法。 二.实验准备 了解什么是DEBUG 1. Debug 是DOS、WINDOWS都提供的实模式(8086方式)程序的调试工具。使用它,可以调试CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序运行。 实验中主要用到的DEBUG功能 1.R命令查看、改变CPU中寄存器的内容; 2.D命令查看内存的内容; 3.E命令改写内存的内容; 4.U命令将内存中的机器指令翻译成汇编指令; 5.T命令执行一条机器指令; 6.用DEBUG的A命令以汇编指令的格式在内存中写入一条机器指令 学习进入DEBUG的方式 1.使用win+R打开运行框 2.输入cmd指令进入DOS操作界面 3.在界面中输入debug来进入DEBUG编辑界面

使用DEBUG的几点说明 1.提示符“-”下才能输入命令,在按“回车”后该命令才开始执行 2.命令的大小写不区分 3.出现语法错误时,界面会给出”^ERROR” 4.用ctrl+c或ctrl+break来终止当前命令的执行,还可以用ctrl+s来暂停屏幕显 示(当连续不断地显示信息时) 5.BUG使用十六进制来计数 常用指令 1.R命令(Register) 格式1:R 功能1:显示所有寄存器中的内容 格式2:R寄存器名称 功能2:显示特定寄存器中的内容,并且可以做修改 2.D命令 功能:显示内存单元内容 格式1: D起始位置 功能1: DEBUG从起始位置显示128个字节的内容。输入命令D 0C0B:100格式2: D 起始位置结束位置 功能2: DEBUG 从起始位置一直显示到结束位置。输入命令D DS:100 11F 格式3: D 起始位置L 长度

第三章 80868088的指令系统

3.1 指令的基本格式   一、指令构成 微计算机的指令系统通常由几十种或百余种指令组成(可见表2-1)。每种指令又由两个字段(Field)构成: l.操作码(OP-Code)字段 该字段指示计算机所要执行的操作类型,由一组二进制代码表示,在汇编语言中又用助记将(Mnemonic)代表。8086执行指令时,首先将操作码从指令队列取入执行部件EU中的控制单元,经指令译码器识别后,产生执行本指令操作所需的时序性控制信号,控制计算机完成规定的操作。 2.操作数(Oprand)字段 该字段则是指出指令执行的操作所需的操作数。在操作数字段中,可以是操作数本身,或是操作数地址或是操作数地址的计算方法。微计算机中此字段通常可有一个或两个,称前者为单操作数指令,称后者为双操作数指令。而双操作数又分别称为源操作数src (source)和目的操作数dst(destination)。在指令执行之前,src和dst均为参加运算处理的两个操作数,指令执行之后,在dst中则存放运算处理的结果。 指令的基本格式如下:   二、8086   8086的指令长度可在1~6字节的范围,如图3-1所示。其中B l和B0为基本字节,B3~B6将根据不同指令作相应的安排。   (1)B1字节各字段定义如下: OP--指令操作码。 D--表示方向。D=1寄存器为目的,D=0寄存器为源。 W--表示字节或字处理方式。W=0为字节指令,W=1为字指令。

(2)B2字节各字段定义如下: MOD--给出指令的寻址方式。8086的一条指令中,最多可使用两个操作数,它们不能同时位于存储器中,最多只能有一个是存储器操作数。当MOD=11时为存储器方式,即有一个操作数位于存储器中;MOD=00,没有位移量; MOD01,只有低8位位移量,需将符号扩展8位,形成16位; MOD=10有16位位移量。当MOD=1l时,为寄存器方式,两个操作数均为寄存器。 REG--表示指令中只有一个操作数,这个操作数为寄存器,可见表3-1,表中左部示出寄存器对应的编码。 R/M--R/M受MOD制约。当 MOD=11(即寄存器方式时),由此字段给出指令中第二个操作数所在的寄存器编码;当MOD≠11时,此字段用来指出应如何计算指令中使用的存储器操作数的有效地址。MOD和R /M字段表示的有效地址 EA计算方法如表3-1所示,共2 4种。   (3) B3~B6字节这四个字节一般是给出存储器操作数地址的位移量(即偏移量)和/或立即操作数。位移量可为8位,也可为16位,这由MOD来决定。8086规定16位的字位移量的低位字节放于低地址单元,高位字节放于高地址单元。 若指令中只有8位位移量, 8086在计算有效地址时,自动用符号将其扩展成一个16位的双字节数,以保证有效地址的计算不产生错误,实现正确的寻址。指令中的立即操作数位于位移量的后面。若B3,B4有位移量,立即操作数就位于B5,B6。若指令中无位移量,立即操作数就位于B3,B4字节。总之,指令中缺少的项将由后面存在的项向前顶替,以减少指令长度。 3.2 8086的寻址方式   8086的操作数可隐含在操作码中,也可以是操作数字段中的操作数本身,还可以是存放操作数的地址,如寄存器,I/0端口及存储器。对存储器,给出的或是存储器地址,或是产生存储器地址的信息。从表3

计算机硬件基础实验报告1(单片机结构&寻址方式和指令系统)

实验2 单片机结构 姓名 孙叶城 学号 2011011700 实验班号 33 机器号 35 一、 实验目的 1. 了解MSP430F1XX 单片机结构 2. 掌握P1~P6基本输入/输出有关寄存器功能 3. 掌握计算机中数的表示和编码 4. 掌握汇编语言指令格式 二、 实验基本任务 1. 了解MSP430F1XX 单片机结构 1) 了解MSP430F149单片机结构 a) PC 当前的初值 0x1100 b) 记录MSP430F149的外围模块 8 bits:Special Function , Port1/2/3/4/5/6 , USART 0 UART/SPI Mode , USART 1 , System Clock , Comparator A ,SFR , RAM , INFO , FLASH. 16 bits: Watchdog Timer , Multiplier , Timer A3 , Timer B7 , ADC12 ,Flash . c) d) 绘制e) 思考为什么实验板的硬件系统对MSP430F13X 、MSP430F14X 和MSP430F16X 是 兼容的? FFFFh 1100h 09FFh 0200h 0000h 01FFh

2)了解MSP430F135单片机结构 a) PC 当前的初值 0xC000 b) 记录MSP430F135的外围模块 8 bits: Special Function , Port1/2/3/4/5/6 , USART 0 UART/SPI Mode , System Clock , Comparator A ,SFR , RAM , INFO , FLASH . 16 bits: Watchdog Timer, Timer A3 , Timer B3 , ADC12 ,Flash . c) 记录SFR 、RAM 、FLASH 的起始地址和末地址,并计算各空间大小 d) 绘制 e) 比较与MSP430F149的存储系统空间分配图有何不同 RAM 的末地址和FLASH 的起始地址不同。 进而RAM 和FLASH 的大小不同。 2. 了解端口P1~P6的选择PXSEL 、方向PXDIR 、输入PXIN 、输出PXOUT 各寄存器功能 FFFFh C000h 03FFh 0200h 0000h 01FFh

80X86汇编语言程序设计教程+课后习题答案(清华大学版)

第二章答案 Tarzan 版 题2.1 8086/8088通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门用途?哪些 寄存器可作为存储器寻址方式的指针寄存器? 答:8086/8088通用寄存器的通用性表现在: 这些寄存器除了各自规定的专门用途外,他们均可以用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果; 8个通用寄存器的专门用途如下: AX 字乘法,字除法,字I/O BX 存储器指针 CX 串操作或循环控制中的计数器 DX 字乘法,字除法,间接I/O SI 存储器指针(串操作中的源指针) DI 存储器指针(串操作中的目的指针) BP 存储器指针(存取堆栈的指针) SP 堆栈指针 其中BX,SI,DI,BP可作为存储器寻址方式的指针寄存器 题2.2 从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可访问的8位 寄存器? 答:从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器; 题2.3 寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器 AX的内容: MOV AX,1234H MOV AL,98H MOV AH,76H ADD AL,81H SUB AL,35H ADD AL,AH

ADC AH,AL ADD AX,0D2H SUB AX,0FFH 答: MOV AX,1234H AX=1234H MOV AL,98H AX=1298H MOV AH,76H AX=7698H ADD AL,81H AX=7619H SUB AL,35H AX=76E4H ADD AL,AH AX=765AH ADC AH,AL AX=D15AH ADD AX,0D2H AX=D22CH SUB AX,0FFH AX=D12DH 题2.4 8086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志 的状态? 答: 8086/8088标志寄存器中定义了9个标志,如下: CF: Carry Flag ZF: Zero Flag SF: Sign Flag OF: Overflow Flag PF: Parity Flag AF: Auxiliary Carry Flag DF: Direction Flag IF: Interrupt-enable Flag TF: Trap Flag 这些标志可分为两类,分别为: 1、运算结果标志; 2、状态控制标志; 采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF; 采用CLC可清除CF,置CF到0 采用STC可置CF到1 采用CLD可置DF到0 采用sTD可置DF到1 采用CLI可置IF到0

微机原理及应用实验报告

微机原理及应用实验报告标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

微机原理及应用实验报告 班级: 姓名: 学号: 中南大学 机电工程学院精密测控实验室

实验二软件程序设计 1.实验目的: 1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。 2.实验内容: 1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 2.、编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结 果存入以20H为起始地址的区域中(低字节在前)。 3.实验设备名称、型号: 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 程序1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次 后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如 果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列 了。则可以退出循环,结束程序。 程序结构框图和程序代码如下:

北京交通大学_8086CPU与寻址方式

1、有两个16位字1EE5H和2A3CH分别存放在微机存储器 000B0H和000B3H单元中,请用图示表示出它们在存储器里的存储情况。 2、微机存储器里存放的信息如右图示, 试读出30022H和30024H字节单元的 内容,以及30021H和30022H字单元 中的内容。 答: 30021H字单元的内容为AB34H。 30022H字单元的内容为CDABH。

2、段地址和偏移地址为3017:000A的存储单元的物理地址 是什么?如果段地址和偏移地址是3015:002A和3010:007A呢? 答:3017:000A、3015:002A和3010:007A的存储单元的物理地址都是3017AH。 3、如果在一个程序开始执行之前(CS)=0A7F0H(如果十六 进制数的最高位为字母,则应该在其前加1个0),(IP)=2B40H,试问该程序的第1个字的物理地址是多少? 答:该程序的第一个字的物理地址是0AAA40H。 5、1MB最多能分成多少逻辑段?请将下列逻辑地址转换成物理地址? ⑴0FFFFH:0 ⑵40H:17H ⑶2000H:2400H 答:1MB最多能分成220 ÷24=216=65536个逻辑段。 0FFFFH:0=0FFFF0H 40H:17H=00417H 2000H:2400H=22400H 6、现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=0B7H,(21203)=65H,试说明下面各条指令执行后AX寄存器的内容。 (1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,[1200H] (4)MOV AX,[BX] (5)MOV AX,1100[BX] (6)MOV AX,[BX][SI]

计算机组成原理实验报告

计算机组成原理实验报告-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

计算机组成原理实验报告 ——微程序控制器实验一.实验目的: 1.能看懂教学计算机(TH-union)已经设计好并正常运行的数条基本指令的功能、格式及 执行流程。并可以自己设计几条指令,并理解其功能,格式及执行流程,在教学计算机上实现。 2.深入理解计算机微程序控制器的功能与组成原理 3.深入学习计算机各类典型指令的执行流程 4.对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念 5.学习微程序控制器的设计过程和相关技术 二.实验原理: 微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。 其工作原理分为: 1、将程序和数据通过输入设备送入存储器; 2、启动运行后从存储器中取出程序指令送到控制器去识别,分析该指令要求什么事; 3、控制器根据指令的含义发出相应的命令(如加法、减法),将存储单元中存放的操作数据取出送往运算器进行运算,再把运算结果送回存储器指定的单元中; 4、运算任务完成后,就可以根据指令将结果通过输出设备输出 三.微指令格式: 微指令由下地址字段及控制字段组成.TH—UNION教学机的微指令格式如下: 其中高八位为下地址字段.其余各位为控制字段. 1)微地址形成逻辑 TH—UNION 教学机利用器件形成下一条微指令在控制器存储器的地址. 下地址的形成由下地址字段及控制字段中的CI3—SCC控制.当为顺序执行时,下地址字段不起作用.下地址为当前微指令地址加1;当为转移指令(CI3— 0=0011)时,由控制信号SCC提供转移条件,由下地址字段提供转移地址. 2)控制字段

寻址方式和指令系统

《微机原理》复习思考题第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作为判断依 据?

80X86汇编语言程序设计教程杨季文课后习题答案

第二章答案 题2.1 8086/8088通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门用途?哪些寄存器可作为存储器寻址方式的指针寄存器? 答:8086/8088通用寄存器的通用性表现在: 这些寄存器除了各自规定的专门用途外,他们均可以用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果; 8个通用寄存器的专门用途如下: AX 字乘法,字除法,字I/O BX 存储器指针 CX 串操作或循环控制中的计数器 DX 字乘法,字除法,间接I/O SI 存储器指针(串操作中的源指针) DI 存储器指针(串操作中的目的指针) BP 存储器指针(存取堆栈的指针) SP 堆栈指针 其中BX,SI,DI,BP可作为存储器寻址方式的指针寄存器 题2.2从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可访问的8位寄存器? 答:从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器; 题2.3寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器 AX的容: MOV AX,1234H MOV AL,98H MOV AH,76H ADD AL,81H SUB AL,35H ADD AL,AH ADC AH,AL ADD AX,0D2H SUB AX,0FFH

答:MOV AX,1234H AX=1234H MOV AL,98H AX=1298H MOV AH,76H AX=7698H ADD AL,81H AX=7619H SUB AL,35H AX=76E4H ADD AL,AH AX=765AH ADC AH,AL AX=D15AH ADD AX,0D2H AX=D22CH SUB AX,0FFH AX=D12DH 题2.48086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志的状态? 答:8086/8088标志寄存器中定义了9个标志,如下: CF: Carry Flag ZF: Zero Flag SF: Sign Flag OF: Overflow Flag PF: Parity Flag AF: Auxiliary Carry Flag DF: Direction Flag IF: Interrupt-enable Flag TF: Trap Flag 这些标志可分为两类,分别为: 1、运算结果标志; 2、状态控制标志; 采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF; 采用CLC可清除CF,置CF到0 采用STC可置CF到1 采用CLD可置DF到0 采用sTD可置DF到1 采用CLI可置IF到0 采用STI可置IF到1 另外,在某些指令执行过程中会改变部分标志的状态; 题2.5请说说标志CF和标志OF的差异。

相关文档
最新文档