微机原理与接口技术 第四章(1)
微机原理与接口技术-第4-1章

例4-3 用键盘最多输入10个字符,并存 入内存变量Buff中,若按“Enter”键,则 表示输入结束。
用BIOS层功能调用实现 层功能调用实现 的源程序: 的源程序: .MODEL SMALL CR EQU 0DH .STACK 200H .DATA Buff DB 10 DUP(?) .CODE .STARTUP MOV CX, 0AH LEA BX, Buff
Windows层功能模块的调用
Win32 API使用堆栈来传递参数 API函数调用 C语言的消息框函数的声明: int MessageBox( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box style );//参数 最后还有一句说明: Library: Use User32.lib.//说明这个函数的位置
API 函数的返回值
有的API 函数有返回值,如MessageBox 定义 函数有返回值, 有的 的返回值是int类型的数,返回值的类型对汇编 的返回值是 类型的数, 类型的数 程序来说也只有dword 一种类型,它永远放在 一种类型, 程序来说也只有 eax 中。如果要返回的内容不是一个 如果要返回的内容不是一个eax所能 所能 容纳的, 容纳的,Win32 API 采用的方法一般是返回一 个指针, 个指针,或者在调用参数中提供一个缓冲区地 干脆把数据直接返回到缓冲区中去。 址,干脆把数据直接返回到缓冲区中去。
.REPEAT MOV AH, 0H INT 16H .BREAK .IF AL==CR MOV [BX],AL INC BX .UNTILCXZ .EXIT 0 END
单片机微型计算机原理及接口技术课后习题答案第4章

单片机微型计算机原理及接口技术课后习题答案第4章4-2 试述指令MOV A,R0和MOV A,@R0的区别两条指令的目的操作数相同,两条指令的区别在于源操作数来源不同:MOV A,R0 指令的源操作数就是R0寄存器的内容;而MOV A,@R0 指令的源操作数是位于存储器单元内,且存储器单元的地址是R0寄存器的内容。
4-3 试述指令MOV A,20H和MOV A,#20H的区别MOV A,20H 源操作数是直接寻址,20H表示源操作数所在存储器单元的地址。
MOV A,#20H 源操作数是立即数寻址,#20H是立即数,也就是源操作数。
4-4 说明一下指令中源操作数所在的存储器类型。
(1)MOV A,#30H; 立即数#30H,就是源操作数,存在于指令中,所以位于程序存储器。
(2)MOV A,30H; 30H是源操作数所在数据存储单元的地址,所以源操作数位于数据存储器。
(3)MOVC A,@A+DPTR;源操作数是变址寻址, 助记符MOVC表示源操作数位于程序存储器。
(4)MOVX A,@DPTR; 源操作数是寄存器间接寻址, 助记符MOVX表示源操作数位于外部数据存储器。
4-5 判断下列指令书写是否正确:(1)MOV A,B; ✔(2)MOV A,#3000H ; ✘,因为A是8位寄存器,而#3000H是16位数值,没法全部存到A里(3)INC,#20H ; ✘只能INC A/direct/Rn/@Ri/DPTR(4)MOV 5,A ; ✔,注意目的操作数是直接寻址方式,不是立即寻址(5)MOV 30H,40H; ✔(6)MOV B,@DPTR ; ✘,@DPTR寻址用于MOVX指令,不能用于MOV指R(7)CJNE 30H,#80H,NEXT ; ✘,CJNE指令格式只能是CJNE A/Rn/@Ri,#data,rel或CJNE A,direct,rel(8)POP A ; ✘只能是直接寻址方式POP direct,正确的是POP ACC(9)PUSH ACC; ✔(10)SJMP 2000H ; ✘rel的范围是-128~127(用补码表示其值)共256B范围4-6 设ACC=12H,B=64H,SP=60H,30H中存放的是78H,试分析下列程序执行后,ACC、B、30H、SP中的内容分别为多少,并画出堆栈示意图。
第4章(1)微机原理与接口技术(第三版)(王忠民)

第四章 80x86 指令系统—立即数寻址方式
MOV AX, 1234H
程序存储器
AH AL
12H 34H 操作码字节 指
34H 令
12H
码
第四章 80x86 指令系统—寄存器寻址方式
2)寄存器寻址方式 操作数存放在CPU的内部寄存器reg中:
8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 4个段寄存器seg: CS、DS、SS、ES
微机原理与接口技术
西安邮电大学计算机学院 宁晓菊
第四章 80x86 指令系统(第一讲)
第一章 微型计算机系统导论(第一讲)
本章主要内容
1 80x86指令的寻址方式(3讲) 2 80x86指令系统(5讲)
第四章 80x86 指令系统(第一讲)
第一章 微型计算机系统导论(第一讲)
本讲主要内容
1 寻址方式概述 2 数据寻址方式之一:
80 21H
操作码
代
21H
码
AL
段
80
第四章 80x86 指令系统—I/O端口寻址方式
⑵ 间接端口寻址方式 MOV DX, 1234H OUT DX, AL
I/O接口 0001H
DX
12
34
0002H
……
AL
80 1234H
80
Thank you!
感谢
谢谢,精品课件 资料搜集
第四章 80x86 指令系统—立即数寻址方式
1)立即数寻址方式 指令中的操作数直接存放在机器代码中,紧跟在操
作码之后(操作数作为指令的一部分存放在操作码 之后的主存单元中)
微机原理与接口技术课后习题参考答案

《微机原理与接口技术》李华贵主编课后习题参考答案第1章(1.6 习题)1.简述名词的概念:微处理器、微型计算机、微型计算机系统。
答:(1)微处理器:微处理器(Microprocessor)简称µP或MP,或CPU。
CPU 是采用大规模和超大规模集成电路技术将算术逻辑部件ALU(Arithmetic Logic Unit)、控制部件CU(Control Unit)和寄存器组R(Registers)等三个基本部分以及内部总线集成在一块半导体芯片上构成的电子器件。
(2)微型计算机:微型计算机(Microcomputer)是指以微处理器为核心,配上由大规模集成电路制作的存储器、输入/输出接口电路及系统总线等所组成的计算机,简称微机。
(3)微型计算机系统:微型计算机系统由硬件与软件两大部分组成,分别称为硬件(Hardware)系统与软件(Software)系统。
其中,硬件(Hardware)系统由CPU、内存储器、各类I/O接口、相应的I/O设备以及连接各部件的地址总线、数据总线、控制总线等组成。
软件(Software)系统:计算机软件(Software)是指为运行、维护、管理、应用计算机所编制的程序及程序运行所需要的数据文档资料的总和。
一般把软件划分为系统软件和应用软件。
其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。
而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。
2.简述名词的概念:指令寄存器、地址寄存器、标志寄存器。
答:(1)指令寄存器:指令寄存器(Instruction Register,IR)用来保存计算机当前正在执行或即将执行的指令。
当一条指令被执行时,首先,CPU从内存取出指令的操作码,并存入IR中,以便指令译码器进行译码分析。
(2)地址寄存器:地址寄存器(Address Register,AR)被动地接受IP传送给它的地址值(二进制地址),AR的作用是保持IP送来的地址,并且以并行方式连接输出到CPU的地址引脚上,以便CPU访问指定的内存单元。
微机原理与接口技术答案(含详解)

微机原理与接口技术习题课后习题参考答案(含部分详解)第一章(p20)1、参考答案:冯•诺伊曼计算机的设计思想(EDVAC方案:存储程序通用电子计算机方案):①计算机分为计算器、控制器、存储器、输入和输出装置五个部分;②计算机内采用二进制;③将程序存储在计算机内,简称“程序存储”。
其中第三点是冯•诺依曼计算机设计的精华,所以人们又把冯•诺依曼原理叫做程序存储原理,即程序由指令组成并和数据一起存放在存储器中,机器则按程序指定的逻辑顺序把指令从存储器中读出来并逐条执行,从而自动完成程序描述的处理工作。
冯•诺伊曼计算机主要以运算器和控制器为中心,结构框图如下图所示。
2、参考答案:微处理器就是中央处理器CPU,是计算机的核心,单独的CPU不能构成计算机系统;微型计算机由微处理器、主存储器、I/O接口(注意:不是I/O设备)组成;而微型计算机系统除了包括微型计算机外,还有系统软件(即操作系统)、应用软件、外存储器和I/O设备等。
微型计算机系统结构如下图所示。
3、答案略,见p6~74、答案略,见图2,或教材图1-35、答案略,见p12~136、参考答案:由于8086微处理器的地址总线的宽度为20位,所以它可寻址220=1M字节的存储空间;而PentiumII微处理器的地址总线的宽度为36位,所以它可寻址236=64G字节的存储空间。
7、参考答案:①PCI(Peripheral Component Interconnect:外围设备互联),是Intel公司1992年发布486微处理器时推出的32/64位标准总线,数据传输速率位132MB/s,适用于Pentium 微型计算机。
PCI总线是同步且独立于微处理器的具有即插即用(PNP:Plug and play,所谓即插即用,是指当板卡插入系统时,系统会自动对板卡所需资源进行分配,如基地址、中断号等,并自动寻找相应的驱动程序)的特性.PCI总线允许任何微处理器通过桥接口连接到PCI 总线上。
微机原理与接口技术(第四版)课后习题答案(1)

第1章微型计算机系统〔习题1.1〕简答题(2)总线信号分成哪三组信号?(3)PC机主存采用DRAM组成还是SRAM组成?(5)ROM-BIOS是什么?(6)中断是什么?(9)处理器的“取指-译码-执行周期”是指什么?〔解答〕②总线信号分成三组,分别是数据总线、地址总线和控制总线。
③ PC机主存采用DRAM组成。
⑤ ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。
⑥中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。
⑨指令的处理过程。
处理器的“取指—译码—执行周期”是指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。
〔习题1.3〕填空题(2)Intel 8086支持___________容量主存空间,80486支持___________容量主存空间。
(3)二进制16位共有___________个编码组合,如果一位对应处理器一个地址信号,16位地址信号共能寻址___________容量主存空间。
(9)最初由公司采用Intel 8088处理器和()操作系统推出PC 机。
② 1MB,4GB③ 216,64KB(9)IBM,DOS〔习题1.4〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕CPU:CPU也称处理器,是微机的核心。
它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。
处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
存储器:存储器是存放程序和数据的部件。
外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。
I/O设备通过I/O接口与主机连接。
《微机原理与接口技术》(第四版)周何琴课后习题答案
.第1章绪论作业1.将下列二进制数转换成十进制数。
(1)11001010B=202(2)00111101B=61(3)01001101B=77(4)10100100B=1643.将下列十进制数分别转换为二进制数和十六进制数。
(2)76= 100 1100B =4CH(4)134= 1000 0110B =86H4.求下列十进制数的 BCD码(1)327=11 0010 0111 (BCD码)(2)1256=1 0010 0101 0110 ( BCD码)6.求出下列 10 进制数的原码、反码和补码(2)+85 (4)-85解: 85=0101 0101B原码: +85= 0101 0101B-85= 1101 0101B反码: +85= 0101 0101B-85= 1010 1010B补码: +85= 0101 0101B-85= 1010 1011B10.画出微型计算机的基本结构框图,说明各部分的主要功能是什么?解:微型计算机的基本结构框图如下:微处理器地址总线CPU存储器I/O 接口I/O 总线I/O 设备数据总线控制总线微处理器 CPU:控制微处理器与存储器或 I/O 设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。
微处理器主要完成:(1)指令控制:从存储器中取指令,指令译码;(2)数据加工:简单的算术逻辑运算;(3)操作控制:在微处理器和存储器或者I/O 之间传送数据;(4)时间控制:程序流向控制。
存储器:用来存放数据和指令。
I/O接口:主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。
I/O 设备:输入原始数据和程序,转换成计算机能识别的信息,送入存储器去等待处理。
输出运算结果。
总线:连接计算机系统中各功能部件的信息通道。
第 2 章 8086CPU 作业2. 8086CPU 内部由哪两部分组成?它们的大致是如何工作的?答:(1)8086CPU 由指令执行部件 EU 和总线接口部件 BIU 两部分组成。
微机原理与接口技术课后习题答案(朱红)
第一章习题答案一、选择题1.十进制数 66 转换成二进制数为_______。
A. 11000010B.01100110C.11100110D.01000010答案:D2.十进制数 27.25 转换成十六进制数为_______。
A. B1.4HB.1B.19HC.1B.4HD.33.4H答案:C3.下列数中最小的是________。
A. (101001)2B. (52)8C. (2B)16D. (50)10答案:A4.若一个数的 BCD 编码为 00101001,则该数与______相等。
A. 41HB.121DC.29DD. 29H答案:C5.十进制数 9874 转换成 BCD 数为________。
A. 9874HB. 4326HC. 2692HD. 6341H答案:A6.BCD 数 64H 代表的真值为_______。
A. 100B.64C.-100D.+100答案:B7.十六进制数 88H,可表示成下面几种形式,错误的表示为_______。
A. 无符号十进制数 136B.带符号十进制数-120C.压缩型 BCD 码十进制数 88D.8 位二进制数-8 的补码表示答案:D8.若[A]原=1011 1101,[B]反=1011 1101,[C]补=1011 1101,以下结论正确的是______。
A. C 最大B. A 最大C.B 最大D.A=B=C答案:B9.8 位二进制补码表示的带符号数 1000 0000B 和 1111 1111B 的十进制数分别是____。
A. 128 和 255 B. 128 和-1 C. -128 和 255 D. -128 和-1答案:D10.微机中地址总线的作用是___________。
A.用于选择存储器单元B.用于选择进行信息传输的设备C.用于指定存储器单元和 I/O 设备接口单元的选择地址D.以上选择都不对答案:C11.计算机中表示地址使用____。
A.无符号数B.原码C.反码D.补码答案:A二、填空题1.计算机的主机由_______、控制器、主存储器组成。
微机原理与单片机接口技术课后题参考答案_1-6章_
5.若下列字符码(ASCII)中有奇偶校验位,但没有数据错误,采用偶校验的
三、简答题
1.简述微处理器、微计算机及微计算机系统三个术语的内涵。 答:微处理器是微计算机系统的核心硬件部件,它本身具有运算能力和控制功 能,对系统的性能起决定性的影响。微处理器一般也称为 CPU;微计算机是由微处 理器、存储器、I/O 接口电路及系统总线组成的裸机系统。微计算机系统是在微计算 机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系 统。三者之间是有很大不同的,微处理器是微型计算机的组成部分,而微型计算机 又是微型计算机系统的组成部分。 2.什么叫总线?为什么各种微型计算机系统中普遍采用总线结构? 答:总线是模块与模块之间传送信息的一组公用信号线。 总线标准的建立使得各种符合标准的模块可以很方便地挂在总线上,使系统扩 展和升级变得高效、简单、易行。因此微型计算机系统中普遍采用总线结构。 3.微型计算机系统总线从功能上分为哪三类?它们各自的功能是什么? 答:微型计算机系统总线从功能上分为地址总线、数据总线和控制总线三类。 地址总线用于指出数据的来源或去向,单向;数据总线提供了模块间数据传输的路 径,双向;控制总线用来传送各种控制信号或状态信息以便更好协调各功能部件的 工作。
2
第 2 章 微处理器及其结构
一、填空题
1.8086/8088 CPU执行指令中所需操作数地址由 EU 计算出 16 位偏移量部分 送 BIU ,由 BIU 最后形成一个 20 位的内存单元物理地址。 2.8086/8088 CPU在总线周期的T1时刻,用A19/S6~A16/S3 输出 20 位地址信息 的最高 4 位,而在其他时钟周期,则输出 状态 信息。 3.8086/8088 CPU复位后,从 0FFFF0H 单元开始读取指令字节,一般这个单 元在 ROM 区中,在其中设置一条 跳转 指令,使CPU对系统进行初始化。 4. 8086系统的存储体系结构中, 1MB存储体分 2 个库, 每个库的容量都是512K 字节, 其中和数据总线D15~D8相连的库全部由 奇地址 单元组成, 称为高位字节库, 并用 BHE 作为此库的选通信号。 5.8086/8088系统中,可以有 64K 个段起始地址,任意相邻的两个段起始地址 相距 16 个存储单元。 6.用段基值及偏移量来指明内存单元地址的方式称为 逻辑地址 。 7.通常8086/8088 CPU中当EU执行一条占用很多时钟周期的指令时,或者在多 处理器系统中在交换总线控制时会出现 空闲 状态。 8.8086 CPU使用 16 根地址线访问I/O端口,最多可访问 64K 个字节端口, 使用 20 根地址线访问存储单元,最多可访问 1M 个字节单元。 9. CPU取一条指令并执行该指令的时间称为 指令 周期, 它通常包含若干个 总 线 周期,而后者又包含有若干个 时钟 周期。 10.设内存中一个数据区的起始地址是1020H:0A1CBH,在存入5个字数据后, 该数据区的下一个可以使用的单元的物理地址是 1020H:0A1D5H 或1A3D5H。 11.8086系统中,默认方式下对指令寻址由寄存器 CS 和 IP 完成,而堆栈段 中的偏移量可由寄存器 SP 或 BP 来指示。 12. 8086的中断向量表位于内存的 00000H~003FFH 区域, 它可以容纳 256 个 中断向量,每个向量占 4 个字节。 13. 8086CPU中典型总线周期由 4 个时钟周期组成, 其中T1期间, CPU输出 地 址 信息;如有必要,可以在 T3和T4 两个时钟周期之间插入1个或多个TW等待周期
微机原理与接口技术(楼顺天第二版)第四章习题解答
微机原理与接口技术(楼顺天第二版)习题解答第4章汇编语言程序设计4。
1、已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。
答:BUF D B ”BONJOUR_BELLE"BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,[SI]MOV [DI],ALINC SIDEC DILOOP L14。
2、利用移位、传送和相加指令实现AX的内容扩大10倍.答:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。
XOR DX,DXSHL AX,1RCL DX,1MOV BX,AXMOV CX,DXSHL AX,1RCL DX, 1SHL AX, 1RCL DX, 1ADD AX, BXADC DX, CX4。
3、在缓冲区V AR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果V AR中保存的为有符号数,则再编写程序实现将其按递减关系排列。
答:V AR DW 1236,-432,3900XOR SI,,SIMOV AX,V AR[SI]CMP AX,V AR[SI+2]JAE L1XCHG AX,V AR[SI+2]L1:CMP AX, V AR[SI+4]JAE L2XCHG AX, V AR[SI+4]L2:MOV V AR[SI],AXMOV AX,V AR[SI+2]CMP AX,V AR[SI+4]JAE L3XCHG AX,V AR[SI+4]L3:MOV V AR[SI+2], AX4。
4、编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据传送指令
罗文坚 中国科大 计算机学院
/~wjluo/mcps/
本章内容
• • • • • • • MOV指令回顾 PUSH/POP指令 装入有效地址 数据串传送 其他数据传送指令 段超越前缀 汇编程序详述
MOV指令回顾
• 机器语言 – 操作码、MOD字段、寄存器分配、R/M存储器寻 址、特殊寻址方式、32位寻址方式、立即指令、 段寄存器MOV指令
8086~Core 2指令的格式
• 段寄存器MOV指令 – 段寄存器的内容通过MOV、PUSH、POP指令传送,用一 组专门的寄存器位(REG字段)选择段寄存器。
8086~Core 2指令的格式
• 段寄存器MOV指令 – 例,MOV [DI], DS
注意Opcode!
64位模式
• 64位模式增加了一个REX前缀(40H~4FH),放在 在其它前缀之后,操作码之前。 • REX前缀的目的是修改指令的第二字节中的REG字 段和R/M字段。 – REG字段用于寻址R8~R15寄存器。
• POP CS是不允许的。
初始化堆栈
• 初始化堆栈时应加载堆栈段寄存器和堆栈指针寄存器。 • 例,堆栈段驻留在10000H~1FFFFH处。
SS=1000H SP=0000H 执行PUSH AX指令?
初始化堆栈
• 汇编语言中堆栈段的设置
• 第一条语句定义堆栈段的开始; • 最后一条语句说明堆栈段的结束。 • 汇编和连接程序将正确的堆栈段的地址压入SS,把 栈顶地址压入SP。
• PUSHFD指令:将标志寄存器EFLAGS压入堆栈。
PUSH指令
• PUSH立即数指令有两种操作码,都是将一个16位立 即数压入堆栈。 – PUSH imm8,操作码为6A – PUSH imm16,操作码为68H
• PUSHD imm32:将32位立即数压入堆栈。
POP指令
• POP指令的格式
8086~Core 2指令的格式
• REG字段和R/M字段(仅当MOD=11时)指示寄存器 的分配情况
8086~Core 2指令的格式
• 例,假设有一个2字节指令8BECH。
MOV BP, SP
8086~Core 2指令的格式
• 例,对于80386以上微处理器,以16位指令模式操作 时,出现了668BE8H指令。 – 第1个字节是66H,寄存器长度超越前缀。 – 操作码MOV,源操作数EAX,目的操作数EBP。 – 这条指令是:MOV EBP, EAX • 例,对于80386以上微处理器,以32位指令模式操作 时,出现了668BE8H指令. – 这条指令是:MOV BP, AX
8086~Core 2指令的格式
• 80386~Core 2微处理器中的32位指令模式,MOD字段的含义:
8086~Core 2指令的格式
• MOD字段的含义受地址长度超越前缀影响。 – 当MOD=10时,16位指令模式下,16位位移量变 成32位位移量。 – 在80386以上微处理器中,工作在32位指令模式下 时,如果不用地址长度超越前缀,则只允许用8位 或32位位移量。 – 当然,32位指令模式下,8位/16位的位移量将被 符号扩展至32位。
8086~Core 2指令的格式
• R/M选择的32位寻址方式
8086~Core 2指令的格式
• R/M选择的32位寻址方式
– 当R/M=100时,指示“比例变址寻址”,指令中 出现附加字节——比例变址字节。
注意:INห้องสมุดไป่ตู้EX=100时,无变址寄存器。
思考:如何指示是否包含位移量?
8086~Core 2指令的格式
PUSH/POP指令
• 立即数寻址(8086/8088不支持,其余支持) – 允许立即数压入堆栈,但不能从堆栈弹出。 • 寄存器寻址 – 可以将任何16位通用寄存器入栈、出栈。 – 80386以上微处理器中,可以将32位扩展寄存器和标志寄 存器EFLAGS入栈、出栈。 – 对于段寄存器寻址,所有段寄存器可以入栈,但CS不作为 出栈的目的操作数。 • 采用存储器寻址时 – 可将16位存储单元的内容入栈、出栈。 – 80386以上CPU中,可将16位存储单元的内容入栈、出栈。
• 6中形式的PUSH/POP指令 – PUSH / POP 寄存器 – PUSH / POP 存储器 – PUSH / POP 立即数 – PUSH / POP 段寄存器 – PUSH / POP 标志寄存器 – PUSHA / POPA (全部寄存器)
• 8086/8088不支持PUSH/POP立即数,不支持 PUSHA/POPA。 • Pentium4和Core2的64位模式不支持PUSHA/POPA。
8086~Core 2指令的格式
• 操作码:选择微处理器执行的操作(加、减、传送) 等。多数机器语言指令的操作码长度为1或2个字节。 • 多数机器语言指令的第1个操作码字节的一般格式。
• D位:指示数据流的方向。 • W位:指令模式位(W=0: 8位;W=1: 16或32位)。
8086~Core 2指令的格式
本章内容
• • • • • • • MOV指令回顾 PUSH/POP指令 装入有效地址 数据串传送 其他数据传送指令 段超越前缀 汇编程序详述
PUSH指令
• PUSH指令的格式
PUSH指令
• PUSHA指令:将AX、CX、DX、BX、SP、BP、SI、 DI顺序入栈。 – 压入堆栈的SP的内容是其在PUSHA指令执行前的 值。
• PUSHF指令:将标志寄存器FLAGS压入堆栈。
• PUSHAD指令:压入80386~Pentium 4中全部32位 寄存器。此时,需要32字节(4×8)的存储空间。
16位指令模式的MOD字段(不带操作数长度前缀)
8086~Core 2指令的格式
• 16位指令模式的MOD字段(不带操作数长度前缀)
– 如果MOD=11,选择寄存器寻址方式,用R/M字段制定寄 存器而不是存储单元。 – 如果MOD=00,01,或10,R/M字段选择一种数据存储器 寻址方式。 • 00表示不带位移量,例,MOV AL, [DI] • 01表示包含8位有符号扩展的位移量。例,MOV AL, [DI+2] • 10表示包含16位有符号扩展的位移量。例,MOV AL, [DI+1000H]
8086~Core 2指令的格式
• 32位指令格式的地址长度前缀(67H)的用法与寄存器长
度前缀类似。
• 在带有前缀的指令中,前缀把寄存器及操作数的长度 从16位转换到32位,或是从32位转换到16位。 • 注意:16位指令模式用8位及16位寄存器和寻址方式; 而32位指令模式使用8位及32位寄存器和寻址方式, 这是默认的用法。 – 前缀可以超越这些默认,使得32位寄存器可以用 于16位模式,而16位寄存器可以用于32位模式。
• R/M选择的32位寻址方式
– 比例变址字节有8位,MOD有2位,REG有3位,D 和W各1位,共计15位,则比例变址有215种组合。 – 在80386~Core2中,仅MOV指令就有32000中组 合。
8086~Core 2指令的格式
• 立即指令。例,MOV WORD PTR [BX+1000H], 1234H
初始化堆栈
• 汇编语言中堆栈段的设置
• 适用于MASM
.MODEL SMALL .STACK 200H;设置堆栈,初始化SS和SP
初始化堆栈
• 如果程序没有定义堆栈段,会出现警告信息。 “LINK: warning L4021: no stack segment” – 该警告信息可以不必理会,因为在操作系统装入程 序时会自动为其添加一个默认的堆栈段,即“缺省 指定”。
64位模式
• REX无比例变址的应用
64位模式
• 64位寄存器和内存的 RRRR和MMMM字段 的标志符
64位模式
• 含比例变址
本章内容
• • • • • • • MOV指令回顾 PUSH/POP指令 装入有效地址 数据串传送 其他数据传送指令 段超越前缀 汇编程序详述
PUSH/POP指令
8086~Core 2指令的格式
• 16位指令模式的MOD字段(不带操作数长度前缀)
– …… – 当微处理器执行指令时,将8位的位移量符号扩展为16位 的位移量。 – 例如,80H符号扩展(sign-extended)后成为FF80H。 • 80386~Core 2微处理器中,对于16位指令模式,MOD字段的 含义没有变化。
8086~Core 2指令的格式
• 16位指令模式
• 32位指令模式(仅用于80386~Pentium 4)
8086~Core 2指令的格式
• 32位指令格式的头2个字节,因为不常出现,故称为超越前 缀(Override prefix)。 – 第1个字节用来修改指令操作数的长度,称为地址长度前 缀。 – 第2个字节修改寄存器的长度,称为寄存器长度前缀。 • 32位指令格式的寄存器长度前缀: – 如果80386~Pentium 4按16位指令模式的机制操作(实 模式或保护模式),而使用32位寄存器,则指令的前面出 现寄存器长度前缀66H。 – 如果微处理器按32位指令模式操作(只在保护模式),而 且使用32位寄存器,则不存在寄存器长度前缀。 – 如果在32位指令模式中出现16位寄存器,则要用寄存器 长度前缀选择16位寄存器。
POP指令
• POP指令不能用立即寻址方式。
• POPF从堆栈弹出2字节数据,并送入FLAGS。 – POPFD恢复EFLAGS。
• POPA从堆栈弹出16字节的数据,依次送入DI、SI、 BP、SP、BX、DX、CX和AX。 – POPAD类似,但针对32位的扩展寄存器。 – 数据出栈时,SP/ESP被忽略。
• 编写汇编程序时,可以指定16位或32位指令模式。