2022年2022年计算机组成及原理实验:CPU指令系统 .pdf
-
资源ID:27248776
资源大小:366.88KB
全文页数:8页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年2022年计算机组成及原理实验:CPU指令系统 .pdf
计算机组成原理实验报告1 / 8实验 3:CPU 指令系统网工 181 :张涛( 35 号)1、Intel 8086CPU 简介Intel 8086 CPU是 Intel 公司生产的一款16 位微处理器,其数据总线和地址总线分别为 16 位和 20 位,可直接寻址1MB容量的内存物理地址空间。Intel 8086 CPU的管脚图如下所示。2、8086 CPU的总体结构8086 CPU的内部总体结构如下图所示。3、 8086 CPU 的寄存器结构8086 CPU 中寄存器总共为 14 个,即 AX,BX ,CX ,DX ,SP ,BP ,SI,DI,IP,FR,CS,DS ,SS ,ES ,所有 14 个寄存器均为 16 位。这 14 个寄存器按又分为了通用寄存器,控制寄8086总线地址总线(20 位)ALU 数据总线(16 位)地址加法器队列总线指令队列总线接口部件(BIU )1 2 3 4 5 6C S I P 内部通信寄存器总线控制逻辑数据总线暂存器A L U 标志寄存器E U 控制器指令执行部件(EU)( 16 位)( 8 位)通用寄存器E S D S S S AX BX CX DX B P S P S I D I AH AL BH BLCH CL DH DL 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 计算机组成原理实验报告2 / 8存器和段寄存器。8086 CPU共有 8个通用寄存器,其中AX ,BX ,CX ,DX 称作为数据寄存器:AX (Accumulator):累加寄存器,也称之为累加器;BX (Base) :基地址寄存器;CX (Count) :计数器寄存器;DX (Data) :数据寄存器;8086 CPU中的 SP 和 BP 又称作为指针寄存器:SP (Stack Pointer):堆栈指针寄存器;BP (Base Pointer):基指针寄存器;8086 CPU中的 SI 和 DI 又称作为变址寄存器:SI (Source Index):源变址寄存器;DI (Destination Index):目的变址寄存器;8086 CPU中的控制寄存器:IP (Instruction Pointer):指令指针寄存器;FLAG :标志寄存器;8086 CPU中的段寄存器:CS 、DS、SS 、ES CS (Code Segment) :代码段寄存器;DS (Data Segment):数据段寄存器;SS (Stack Segment):堆栈段寄存器;ES (Extra Segment):附加段寄存器;8086 CPU 的通用寄存器如下图所示。4、通用寄存器的用法在 8086 CPU 中,通用寄存器有 8 个,分别是 AX,BX ,CX ,DX ,SP ,BP ,SI,DI ,至于为什么给它们取名做通用寄存器,那是因为,这些个寄存器每一个都有自己专门的用途,比如 CX 作为计数寄存器, 则是在使用 LOOP 指令循环时用来指定循环次数的寄存器,如果它们每一个都只有一个专用的作用,那就它们只能称之为专用寄存器了,正是因为这些个寄存器还可以用来传送数据和暂存数据,所以才称它们为通用寄存器。数据寄存器有 AX,BX ,CX ,DX 共四个,由于在 8086 之前的 CPU 为 8 位 CPU,所以为了兼容以前的 8 位程序,在 8086 CPU 中,每一个数据寄存器都可以当做两个单独的寄存器来使用, 由此,每一个 16 位寄存器就可以当做 2 个独立的 8 位寄存器来使用了, 即:AX 寄存器可以分为两个独立的 8 位的 AH 和 AL 寄存器;BX 寄存器可以分为两个独立的 8 位的 BH 和 BL 寄存器;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 计算机组成原理实验报告3 / 8CX 寄存器可以分为两个独立的 8 位的 CH 和 CL 寄存器;DX 寄存器可以分为两个独立的 8 位的 DH 和 DL 寄存器;除了上面 4 个数据寄存器以外,其他寄存器均不可以分为两个独立的 8 位寄存器, 注意在上面标志中的“独立”二字,这两个字表明 AH 和 AL 作为 8 位寄存器使用时,可以看做它们是互不相关的,也就是看做两个完全没有联系的寄存器 X 和 Y 即可,比如指令“MOV AH, 12H” ,CPU 在执行时根本就不理会 AL ,而仅仅对 AH 操作。下面给出一幅 16 位数据寄存器的结构图,16位的寄存器 AX 可以表示成两个 8 位寄存器,其中 AH 表示 AX中高位的 8 位寄存器, AL 表示 AX中低位的 8 位寄存器。5、8086 CPU 的算术逻辑单元( ALU )及标志寄存器( FR )(1) 算术逻辑运算单元ALU 可完成 16 位或 8 位的算术逻辑运算。 ALU运算后的结果特征(有无进位,溢出等)置入标志寄存器中保存。(2) 标志寄存器FR 是一个 16 位寄存器,用来存放运算结果的条件和控制标志,如下图所示。标志共分为两类:条件标志共6 位,用于寄存程序运行的状态信息,这些标志往往用作后续指令判断的依据。控制标志共3 位,用于控制机器或程序的某些运行过程。i) 条件标志 CF( Carry Flag)进位标志反映在运行结果的最高位有无进位或借位。 CF=1,表示本次运算中最高位有进位(加法运算时)或有借位(减法运算时);否则 CF=0 。 PF( Parity Flag)奇偶标志反映运算结果中“ 1”的个数的奇偶性,主要用于判断数据传送过程中是否出错。 PF=1,表示本次运算结果的低八位中有偶数个“1” PF=0,表示本次运算结果的低八位中有奇数个“1” AF( Auxiliary Carry Flag)辅助进位标志名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 计算机组成原理实验报告4 / 8加减运算时,若D3向 D4产生了进位或借位则AF=1 。否则 AF=0 。在 BCD码运算时,该标识用于十进制调整。 ZF( Zero Flag)零标志反映计算结果是否为0。若结果为零则ZF=1,否则 ZF=0。 SF( Sign Flag)符号标志位反映计算结果最高位即符号位的状态。如果运算结果的最高位为1 则 SF=1, 否则 SF=0。 OF( Overflow Flag)溢出标志位反映运算结果是否超出了带符号数的表数范围。 OF=1 表示运算结果超出了该字长所能表示的范围,即产生溢出;否则OF=0 。机器判断是否溢出是根据根据最高位的进位与次高位的进位是否相同来确定。若两者不相同则 OF=1 (表示有溢出) ,否则 OF=0(表示无溢出) 。ii) 条件标志 DF( Direction Flag)方向标志用于串处理指令中控制串处理的方向。在串操作指令中,若DF=0 ,表示串操作指令执行后地址指针自动增量;DF=1 ,表示地址指针自动减量。DF可通过 STD指令置位,也可通过CLD指令复位。 IF ( Interrupt Flag)中断允许标志位用于控制 CPU是否允许响应可屏蔽中断请求。 IF=1,表示允许CPU响应可屏蔽中断请求。 IF=0 ,表示禁止CPU响应可屏蔽中断请求。 IF 可通过 STI 指令置位(置1) ,也可通过CLI 指令复位(清零) 。 TF( Trap Flag)单步标志位用于单步操作。 TF=1,控制 CPU进入单步工作方式。在这种工作方式下,CPU每执行完一条指令就会自动产生一次内部中断,这在程序调试过程中很有用。 例 :若 AL = 3BH,AH = 7DH,指出 AL 和 AH中的内容相加后,CF,AF ,PF,SF ,OF和 ZF的状态。CF=0 (无进位)AF = 1 (有辅助进位)PF=1(运算结果有4 个 1)SF = 1 (运算结果符号位为1)OF =1 (有溢出)ZF = 0 (运算结果不为0)5、段寄存器和存储器分段8086 内部有 4 个段寄存器DS 、ES 、CS 、SS ,均为 16 位寄存器,用于存放一个存储段的起始地址。2 个数据段寄存器分别是:DS 、ES 。2 个数据段寄存器分别是:代码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 计算机组成原理实验报告5 / 8段寄存器CS (code segment)和堆栈段寄存器SS (stack segment)。段寄存器是用户可以直接访问的寄存器,这就是说,可以通过软件编程来改变段寄存器中的值。因此,程序要想跨越一片存储区域去访问存储器的另一个区域,只要改变相应的段寄存器中的值即可实现。6、实模式下对内存的访问方式实模式下, 8086 CPU将程序指定的某个段寄存器的值左移4 位后加上程序指定的某个数据寄存器的值(或再加上另一个“偏移值”)作为要访问的存储单元的地址,即物理地址,物理地址是访问存储器的实际地址,用20 位二进制表示:物理地址段寄存器的内容16(即左移4 位) + 偏移地址如下图所示。 例 :逻辑地址2345H:1100H对应的物理地址是24550H,即: 23450H+1100H =24550H 反之,物理地址24550H, 它对应的逻辑地址可以是2455H:0000H, 也可以是2400H: 0550H等。注意:一个存储单元的物理地址是惟一的,而它对应的逻辑地址是不惟一的。2.68086 CPU 的典型指令(1)传送类指令实现数据在寄存器与存储单元之间的传递常用指令有:mov寄存器 / 存储单元,常数;寄存器 / 存储单元常数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 计算机组成原理实验报告6 / 8mov寄存器 _d/ 存储单元,寄存器_s ;寄存器 _d/ 存储单元寄存器 _s 的值mov寄存器 _d,寄存器 _s/ 存储单元;寄存器 _d 寄存器 _s/ 存储单元的值注意,传送类指令的执行结果不影响标志位。(2)算术运算类指令实现数据的算术运算常用指令有:add/sub 寄存器,常数;寄存器寄存器的值 +/常数add/sub 寄存器 _d,寄存器 _s ;寄存器 _d 寄存器 _d 的值 +/寄存器 _s的值inc 寄存器;寄存器寄存器的值 + 1 dec 寄存器;寄存器寄存器的值1 cmp寄存器,常数;用寄存器减去常数的差值来比较寄存器的值和常数的值注意,算术运算指令的执行结果影响标志位(详见上文“各标志位的含义”)。(3)逻辑运算类指令实现数据的逻辑运算常用指令有:and/or 寄存器,常数;寄存器寄存器的值与/ 或常数and/or 寄存器 _d,寄存器 _s ;寄存器 _d 寄存器 _d 的值与 / 或寄存器 _s 注意,逻辑运算指令的执行结果影响标志位(详见上文“各标志位的含义”)。(4)转移类指令根据当前特定的标志位来改变程序的执行顺序常用指令有:jmp 指令标号;无条件转到“指令标号”所指定的指令处执行指令jz/je指令标号;若标志位ZF=1,则转到“指令标号”所指定的指令处执行指令jnz/jne指令标号;若标志位ZF=0,则转到“指令标号”所指定的指令处执行指令jc 指令标号;若标志位CF=1 ,则转到“指令标号”所指定的指令处执行指令jnc 指令标号;若标志位CF=0 ,则转到“指令标号”所指定的指令处执行指令(5)堆栈类指令调用DOS 操作系统的功能常用指令有:push 寄存器;堆顶单元寄存器的值pop 寄存器;寄存器堆顶单元的值(6)系统调用类指令调用DOS操作系统的功能常用指令有:int 21h ;依据 ah 中的不同值,执行不同的功能,其部分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 计算机组成原理实验报告7 / 8功能如下表所示。例如,下述调用使得从应用程序返回DOS操作系统状态:mov ah, 4ch int 21h 7、8086 汇编程序的伪指令伪指令又称为伪操作,是在对源程序汇编期间由汇编程序(属于系统软件)处理的操作,伪指令完成如处理器选择、定义程序模式、定义用户数据区、指示程序结束等功能。常用的伪指令包括:(1)选择处理器常用指令有:.386 ;选择 8086 处理器.486 ;选择 80486 处理器.586 ;选择 80586 处理器(2)定义用户数据区data segment User_Datadb 0123456789 data ends (3)定义用户程序区code segment assumecs:code, ds:data, es:data start: 汇编指令 _1 汇编指令 _2 .汇编指令 _n 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 计算机组成原理实验报告8 / 8code ends end start 8、8086 CPU汇编程序示例下面是一段示例程序。.386 data segment area db 0000000000,0dh,0ah,$ data ends code segment assumecs:code,ds:data,es:data start: mov ax,data mov ds,ax mov ax,0f7ch moves,ax movbx, offset area mov cx,100h mov dl,31h rep1: mov dh,0 moves:bx,dh moves:bx,dl inc dl incbx cmp dl, 34h jnz rep1 exit: mov ah,4ch int 21h code ends end start 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -