ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:31.62KB ,
资源ID:5373548      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5373548.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机复习1.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

微机复习1.docx

1、微机复习1第一章 微机系统微机的结构1、计算机的经典结构(1)计算机由运算器、控制器、存储器、输入设备和输出设备五大部分组成(2)数据和程序以二进制代码形式不加区分地存放在存储器总,存放位置由地址指定,数制为二进制。2、 系统总线的分类(1)数据总线(Data Bus),它决定了处理器的字长。(2)地址总线(Address Bus),它决定系统所能直接访问的存储器空间的容量。(3)控制总线(Control Bus)3、微处理器组成 运算器、控制器、内部寄存器4、存储器组成5、读写过程第三章 微处理器及其系统1、8086内部数据总线的宽度是16位,外部数据总线宽度也是16位。8086地址总线的宽

2、度为20位,具有1MB(220)寻址空间。2、 8086CPU由总线接口部件BIU和执行部件EU组成,为8086取指令和执行指令的并行操作提供硬件支持。3、 总线周期定义4个T时钟周期,了解各个T有不同的状态。4、寄存器结构8086微处理器包含有13个16位的寄存器和9位标志位。4个通用寄存器(AX,BX,CX,DX)4个段寄存器(CS,DS,SS,ES)4个指针和变址寄存器(SP,BP,SI,DI)1个指令指针(IP)1)、通用寄存器(1)8086含4个16位数据寄存器,它们又可分为8个8位寄存器,即:AX AH,ALBXBH,BLCXCH,CLDXDH,DL常用来存放参与运算的操作数或运算

3、结果(2)数据寄存器特有的习惯用法AX:累加器。多用于存放中间运算结果。所有I/O指令必须都通过AX与接口传送信息;BX:基址寄存器。在间接寻址中用于存放基地址;CX:计数寄存器。用于在循环或串操作指令中存放循环次数或重复次数;DX:数据寄存器。在32位乘除法运算时,存放高16位数;在间接寻址的I/O指令中存放I/O端口地址。2)、指针和变址寄存器SP:堆栈指针寄存器,其内容为栈顶的偏移地址;BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。SI:源变址寄存器DI:目标变址寄存器变址寄存器常用于间接寻址或变址寻址。3)、段寄存器CS:代码段寄存器,代码段用于存放指令代码DS:数据

4、段寄存器 ES:附加段寄存器,数据段和附加段用来存放操作数SS:堆栈段寄存器,堆栈段用于存放返回地址,保存寄存器内容,传递参数4)、指令指针(IP)16位指令指针寄存器,其内容为下一条要执行的指令的偏移地址。5)、标志寄存器(1)状态标志:进位标志位(CF):运算结果的最高位有进位或有借位,则CF=1辅助进位标志位(AF):运算结果的低四位有进位或借位,则AF=1溢出标志位(OF):运算结果有溢出,则OF=1零标志位(ZF):反映指令的执行是否产生一个为零的结果符号标志位(SF):指出该指令的执行是否产生一个负的结果奇偶标志位(PF):表示指令运算结果的低8位“1”个数是否为偶数(2)控制标志

5、位中断允许标志位(IF):表示CPU是否能够响应外部可屏蔽中断请求跟踪标志(TF):CPU单步执行5、8086的引脚及其功能AD15AD0:双向三态的地址/数据总线,输入/输出信号INTR:可屏蔽中断请求输入信号,高电平有效。可通过设置IF的值来控制。NMI:非屏蔽中断输入信号。不能用软件进行屏蔽。RESET:复位输入信号,高电平有效。MN/MX:最小最大模式输入控制信号。8086寻址方式一、数据寻址方式1、立即寻址 操作数(为一常数)直接由指令给出 (此操作数称为立即数)立即寻址只能用于源操作数例:MOV AX, 1C8FHMOV BYTE PTR2A00H, 8FH错误例: MOV 2A0

6、0H,AX ; 错误!指令操作例:MOV AX,3102H; AX3102H执行后,(AH) = 31H,(AL) = 02H2、寄存器寻址(1)操作数放在某个寄存器中(2)源操作数与目的操作数字长要相同(3)寄存器寻址与段地址无关例: MOV AX, BX MOV 3F00H, AX MOV CL, AL 错误例: MOV AX,BL ; 字长不同 MOV ES:AX,DX ; 寄存器与段无关3、直接寻址(1)指令中直接给出操作数的16位偏移地址 偏移地址也称为有效地址(EA, Effective Address)(2)默认的段寄存器为DS,但也可以显式地指定其他段寄存器称为段超越前缀(3)

7、偏移地址也可用符号地址来表示,如ADDR、VAR例: MOV AX ,2A00H MOV DX ,ES:2A00HMOV SI,TABLE_PTR4、间接寻址 操作数的偏移地址(有效地址EA)放在寄存器中 只有SI、DI、BX和BP可作间址寄存器 例: MOV AX,BX MOV CL,CS:DI 错误例 : MOV AX, DX MOV CL, AX5、直接变址寻址EA=间址寄存器的内容加上一个8/16位的位移量 例: MOV AX, BX+8 MOV CX, TABLESI MOV AX, BP; 默认段寄存器为SS 指令操作例:MOV AX,DATABX 若(DS)=6000H, (BX

8、)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H 则物理地址 = 60000H + 1000H + 2A00H = 63A00H指令执行后:(AX)=5566H6、基址变址寻址 若操作数的偏移地址:由基址寄存器(BX或BP)给出 基址寻址方式由变址寄存器(SI或DI)给出 变址寻址方式由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址-变址寻址。EA=(BX)+(SI)或(DI);EA=(BP)+(SI)或(DI)同一组内的寄存器不能同时出现。注意:除了有段跨越前缀的情况外,当基址寄存器为BX时,操作数应该存放在数据段

9、DS中,当基址寄存器为BP时,操作数应放在堆栈段SS中。例: MOV AX, BX SI MOV AX, BX+SI MOV AX, DS: BP DI错误例: MOV AX, BX BP MOV AX, DI SI指令操作例:MOV AX,BXSI假定:(DS)=8000H, (BX)=2000H, SI=1000H则物理地址 = 80000H + 2000H + 1000H = 83000H指令执行后: (AL)=83000H(AH)=83001H7、相对基址变址寻址 在基址-变址寻址的基础上再加上一个相对位移量EA=(BX)+(SI)或(DI)+8位或16位位移量;EA=(BP)+(SI

10、)或(DI)+8位或16位位移量指令操作例:MOV AX,DATADIBX若(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H则指令执行后(AH)=83021H, (AL)=83020H寄存器间接、寄存器相对、基址变址、相对基址变址四种寻址方式的比较: 寻址方式 指令操作数形式 寄存器间接 只有一个寄存器(BX/BP/SI/DI之一) 寄存器相对 一个寄存器加上位移量 基址变址 两个不同类别的寄存器 相对基址-变址 两个不同类别的寄存器加上位移量二、地址寻址方式(了解有4类,能判断)简要判断依据(指令中间的单词):段内直接 short,near段内间接

11、word段间直接 far段间间接 dword特殊的情况:段内直接用NEAR时可以省略,例如:JMP PTR BETA 8086指令系统一、数据传送指令1、通用传送指令(1) MOV dest,src; destsrc传送的是字节还是字取决于指令中涉及的寄存器是8位还是16位。具体来说可实现:1 MOV mem/reg1,mem/reg2指令中两操作数中至少有一个为寄存器 MOV reg,data ;立即数送寄存器 MOV mem,data ;立即数送存储单元 MOV acc,mem ;存储单元送累加器 MOV mem,acc ;累加器送存储单元 MOV segreg,mem/reg ;存储单元

12、/寄存器送段寄存器 MOV mem/reg,segreg ;段寄存器送存储单元/寄存器MOV指令的使用规则IP不能作目的寄存器不允许memmem不允许segregsegreg立即数不允许作为目的操作数不允许segreg立即数源操作数与目的操作数类型要一致当源操作数为单字节的立即数,而目的操作数为间址、变址、基址+变址的内存数时,必须用PTR说明数据类型。如:MOV BX,12H 是错误的。(2)、堆栈指令堆栈是按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位进行压入弹出操作。规定由SS指示堆栈段的段基址,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。堆栈的最高地

13、址叫栈底。1 压栈指令PUSHPUSH src ; src为16位操作数例:PUSH AX ;将AX内容压栈执行操作:(SP)-1高字节AH(SP)-2低字节AL(SP)(SP)- 2注意进栈方向是高地址向低地址发展。2 弹出指令POPPOP dest 例:POP BX ;将栈顶内容弹至BX执行操作:(BL)(SP)(BH)(SP)+1(SP)(SP)+2堆栈指令在使用时需注意的几点:1 堆栈操作总是按字进行2 不能从栈顶弹出一个字给CS3 堆栈指针为SS:SP,SP永远指向栈顶 SP自动进行增减量(-2,+2)(3)、交换指令XCHG格式:XCHG reg,mem/reg功能:交换两操作数的

14、内容。要求:两操作数中必须有一个在寄存器中;操作数不能为段寄存器和立即数;源和目地操作数类型要一致。举例: XCHG AX,BXXCHG 2000,CL(4)查表指令XLAT执行的操作:AL(BX)+(AL)又叫查表转换指令,它可根据表项序号查出表中对应代码的内容。执行时先将表的首地址(偏移地址)送到BX中,表项序号存于AL中。2、输入输出指令只限于用累加器AL或AX来传送信息。功能: (累加器)I/O端口(1) 输入指令IN格式:IN acc,PORT ;PORT端口号0255HIN acc,DX ;DX表示的端口范围达64K例:IN AL,80H ;(AL)(80H端口)IN AL,DX

15、;(AL)(DX)(2) 输出指令OUT格式:OUT port,accOUT DX,acc例:OUT 68H,AX ;(69H,68H)(AX)OUT DX,AL ;(DX)(AL)在使用间接寻址的IN/OUT指令时,要事先用传送指令把I/O端口号设置到DX寄存器如:MOV DX,220HIN AL,DX;将220H端口内容读入AL3、目标地址传送指令(1) LEA传送偏移地址格式:LEA reg,mem ; 将指定内存单元的偏移地址送到指定寄存器要求:1) 源操作数必须是一个存储器操作数;2) 目的操作数必须是一个16位的通用寄存器。例:LEA BX,SI+10H设:(SI)=1000H则执

16、行该指令后,(BX)=1010H注意以下二条指令差别:LEA BX,BUFFER MOV BX,BUFFER前者表示将符号地址为BUFFER的存储单元的偏移地址取到 BX中;后者表示将BUFFER存储单元中的内容取到 BX中。下面两条指令等效:LEA BX,BUFFERMOV BX, OFFSET BUFFER其中OFFSET BUFFER表示存储器单元BUFFER的偏移地址。二者都可用于取存储器单元的偏移地址,但LEA指令可以取动态的地址,OFFSET只能取静态的地址。二、算术运算指令1、 加法指令(1) 不带进位的加法指令ADD格式: ADD acc,dataADD mem/reg,dat

17、aADD mem/reg1,mem/reg2实例:ADD AL,30HADD SI,BX+20HADD CX,SIADD DI,200HADD指令对6个状态标志均产生影响。例:已知(BX)=D75FH指令 ADD BX,8046H 执行后,状态标志各是多少?D75FH = 1110 0111 0101 11118046H = 1000 0000 0100 01101 1 11 11 0110 0111 1010 0101结果:C=1, Z=0, P=0, A=1, O=1, S=0判断溢出与进位从硬件的角度:默认参与运算的操作数都是有符号数,当两数的符号位相同,而和的结果相异时有溢出,则OF=

18、1,否则OF=0(2) 带进位的加法ADCADC指令在形式上和功能上与ADD类似,只是相加时还要包括进位标志CF的内容,例如:ADC AL,68H ; AL(AL)+68H+(CF)ADC AX,CX ;AX(AX)+(CX)+(CF)ADC BX,DI ;BX(BX)+DI+1DI+(CF)(3)加1指令INC格式:INC reg/mem功能:类似于C语言中的+操作:对指定的操作数加1 例: INC ALINC SIINC BYTE PTRBX+4注:本指令不影响CF标志。(4)非压缩BCD码加法调整指令AAAAAA指令的操作:如果AL的低4位9或AF=1,则: AL(AL)+6,(AH)(

19、AH)+1,AF1 AL高4位清零 CFAF否则AL高4位清零(5)压缩BCD码加法调整指令DAA两个压缩BCD码相加结果在AL中,通过DAA调整得到一个正确的压缩BCD码.指令操作(调整方法):若AL的低4位9或AF=1则(AL)(AL)+6,AF1若AL的高4位9或CF=1则(AL)(AL)+60H,CF1除OF外,DAA指令影响所有其它标志。DAA指令应紧跟在ADD或ADC指令之后。2、 减法指令(1)不考虑借位的减法指令SUB格式: SUB dest, src操作: dest(dest)-(src)指令例子:SUB AL,60HSUB BX+20H,DXSUB AX,CX(2)考虑借位

20、的减法指令SBBSBB指令主要用于多字节的减法。格式: SBB dest, src操作: dest(dest)-(src)-(CF)指令例子:SBB AX,CXSBB WORD PTRSI,2080HSBB SI,DX(3)减1指令DEC作用类似于C语言中的”操作符。格式:DEC opr操作:opr(opr)-1指令例子:DEC CLDEC BYTE PTRDI+2DEC SI (4)求补指令NEG格式: NEG opr操作: opr 0-(opr)对一个操作数取补码相当于用0减去此操作数,故利用NEG指令可得到负数的绝对值。例:若(AL)=0FCH,则执行 NEG AL后,(AL)=04H,

21、CF=1(5)比较指令CMP格式: CMP dest, src操作: (dest)-(src)CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。指令例子:CMP AL,0AHCMP CX,SICMP DI,BX+03(6)非压缩BCD码减法调整指令AAS对AL中由两个非压缩的BCD码相减的结果进行调整。调整操作为:若AL的低4位9或AF=1,则: AL(AL)-6,AH(AH)-1,AF1 AL的高4位清零 CFAF否则:AL的高4位清零(7)压缩BCD码减法调整指令DAS对AL中由两个压缩BCD码相减的结果进行调整。调整操作为:若AL的低4位9或AF=1,则:AL(

22、AL)-6, 且AF1若AL的高4位9或CF=1,则:AL(AL)-60H,且CF1DAS对OF无定义,但影响其余标志位。DAS指令要求跟在减法指令之后。3、 乘法指令进行乘法时:8位*8位16位乘积16位*16位32位乘积(1) 无符号数的乘法指令MUL(MEM/REG)格式: MUL src操作:字节操作数 (AX)(AL) (src)字操作数 (DX, AX)(AX) (src)指令例子:MUL BL ;(AL)(BL),乘积在AX中MUL CX ;(AX)(CX),乘积在DX,AX中MUL BYTE PTRBX(2)有符号数乘法指令IMUL格式与MUL指令类似,只是要求两操作数均为有符

23、号数。指令例子:IMUL BL ;(AX)(AL)(BL)IMUL WORD PTRSI;(DX,AX)(AX)(SI+1SI)注意:MUL/IMUL指令中 AL(AX)为隐含的乘数寄存器; AX(DX,AX)为隐含的乘积寄存器; SRC不能为立即数; 除CF和OF外,对其它标志位无定义。4、除法指令进行除法时:16位/8位8位商32位/16位16位商对被除数、商及余数存放有如下规定:被除数 商 余数字节除法 AX AL AH字除法 DX:AX AX DX(1)无符号数除法指令DIV格式: DIV src操作:字节操作 (AL)(AX) / (SRC) 的商(AH)(AX) / (SRC) 的

24、余数字操作 (AX) (DX, AX) / (SRC) 的商(DX) (DX, AX) / (SRC) 的余数指令例子:DIV CLDIV WORD PTRBX(2)有符号数除法指令IDIV格式: IDIV src操作与DIV类似。商及余数均为有符号数,且余数符号总是与被除数符号相同。注意: 对于DIV/IDIV指令AX(DX,AX)为隐含的被除数寄存器。AL(AX)为隐含的商寄存器。AH(DX)为隐含的余数寄存器。src不能为立即数。对所有条件标志位均无定义 关于除法操作中的字长扩展问题除法运算要求被除数字长是除数字长的两倍,若不满足则需对被除数进行扩展,否则产生错误。对于无符号数除法扩展,

25、只需将AH或DX清零即可。对有符号数而言,则是符号位的扩展。可使用前面介绍过的符号扩展指令CBW和CWD三、逻辑运算和移位指令1、逻辑运算指令(1)逻辑与AND对两个操作数进行按位逻辑“与”操作。格式:AND dest, src用途:保留操作数的某几位,清零其他位。例1:保留AL中低4位,高4位清0。AND AL,0FH(2)逻辑或OR对两个操作数进行按位逻辑”或”操作。格式:OR dest, src用途:对操作数的某几位置1;对两操作数进行组合。例1:把AL中的非压缩BCD码变成相应十进制数的ASCII码。OR AL, 30H(3)逻辑非NOT对操作数进行按位逻辑”非”操作。格式:NOT m

26、em/reg例:NOT CXNOT BYTE PTRDI(4)逻辑异或XOR对两个操作数按位进行”异或”操作。格式:XOR dest, src用途:对reg清零(自身异或)把reg/mem的某几位变反(与1异或)例1:把AX寄存器清零。MOV AX,0XOR AX,AXAND AX,0SUB AX,AX(5)测试指令TEST操作与AND指令类似,但不将”与”的结果送回,只影响标志位。TEST指令常用于位测试,与条件转移指令一起用。例:测试AL的内容是否为负数。 TEST AL,80H ;检查AL中D7=1? JNZ MINUS ;是1(负数),转MINUS ;否则为正数2、移位指令(1)非循环

27、移位指令 算术左移指令 SAL(Shift Arithmetic Left) 算术右移指令 SAR(Shift Arithmetic Right) 逻辑左移指令 SHL(Shift Left) 逻辑右移指令 SHR(Shift Right)这4条指令的格式相同,以SAL为例:CL ;移位位数大于1时SAL mem/reg1 ;移位位数等于1时算术移位把操作数看做有符号数; 逻辑移位把操作数看做无符号数。移位位数放在CL寄存器中,如果只移1位,也 可以直接写在指令中。例如: MOV CL,4 SHR AL,CL ;AL中的内容右移4位影响C,P,S,Z,O标志。结果未溢出时: 左移1位操作数*2

28、右移1位操作数/2例:把AL中的数x乘10因为10=8+2=23+21,所以可用移位实现乘10操作。程序如下: MOV CL,3 SAL AL,1 ; 2x MOV AH,AL SAL AL,1 ; 4xSAL AL,1 ; 8xADD AL,AH ; 8x+2x = 10x四、控制转移指令1、 转移指令(1)无条件转移指令JMP 格式:JMP label本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。(2)条件转移指令(补充内容) 根据单个标志位设置的条件转移指令JB/JC ;低于,或CF=1,则转移JNB/JNC/JAE ;高于或等于,或CF=0,则转移JP/JPE ;奇偶标志PF=1(偶),则转移JNP/JPO ;奇偶标志PF=0(奇),则转移JZ/JE ;结果为零(ZF=1),则转移JNZ/JNE ;结果不为零(ZF=0),则转移JS ;SF=1,则转移JNS ;SF=0,则转移JO ;OF=1,则转移JNO ;OF=0,则转移根据组合条件设置的条件转移指令这类指令主要用来判断两个数的大小。判断无符号数的大小JA 高于则转移 条件为: CF=0ZF=0,即ABJNA/JBE 低于或等于则转移条件为: CF=1ZF=1,即ABJB AB则转移JNB AB则转移判断有符号数的大小JG ;大于则转移(AB) 条件

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2