微机原理与接口技术知识点总结_第1页
微机原理与接口技术知识点总结_第2页
微机原理与接口技术知识点总结_第3页
微机原理与接口技术知识点总结_第4页
微机原理与接口技术知识点总结_第5页
已阅读5页,还剩19页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与接口技术 24/24微机原理与接口技术复习参考资料我想计算机系统基本组成原理一、计算机中的数制1、无符号数的表示方法:(1)十进制计数的表示法特点:以十为底,逢十进一;共有0-9十个数字符号。(2)二进制计数表示方法:特点:以2为底,逢2进位;只有0和1两个符号。(3)十六进制数的表示法:特点:以16为底,逢16进位;有0-9及AF(表示1015)共16个数字符号。 2、各种数制之间的转换(1)非十进制数到十进制数的转换按相应进位计数制的权表达式展开,再按十进制求和。(见书本1.2.3,1.2.4)(2)十进制数制转换为二进制数制 十进制 二进制的转换:整数部分:除2取余; 小数部分

2、:乘2取整。十进制 十六进制的转换: 整数部分:除16取余; 小数部分:乘16取整。以小数点为起点求得整数和小数的各个位。(3)二进制与十六进制数之间的转换用4位二进制数表示1位十六进制数3、二进制数的逻辑运算特点:按位运算,无进借位(1)与运算:只有A、B变量皆为1时,与运算的结果就是1(2)或运算:A、B变量中,只要有一个为1,或运算的结果就是1(3)非运算(4)异或运算:A、B两个变量只要不同,异或运算的结果就是14、无符号数的机器数表示方法(1)位数不等的二进制码(2)BCD码:计算机中的10进制数,用二进制表示的十进制数(3)ASCII码:计算机中的输入输出设备中使用的字符信息编码二

3、、计算机中的码制1、对于符号数,机器数常用的表示方法有原码、反码和补码三种。数X的原码记作X原,反码记作X反,补码记作X补。注意:对正数,三种表示法均相同。它们的差别在于对负数的表示。(1)原码:符号位:0表示正,1表示负;数值位:真值的绝对值。注意:数0的原码不唯一 (2)反码:若X0 ,则 X反=X原;若X0, 则X补= X反= X原;若X0, 则X补= X反+1;计算机中有符号数都是以补码的形式出现。注意:机器字长为8时,数0的补码唯一,同为000000002、8位二进制的表示范围:原码:-127+127反码:-127+127补码:-128+127三、微型计算机系统组成结构1、计算机的经

4、典结构冯.诺依曼结构(1)计算机由运算器、控制器、输入设备和输出设备五大部分组成(运算器和控制器又称为CPU)(2)数据和程序以二进制代码形式不加区分地存放在存储器总,存放位置由地址指定,数制为二进制。(3)控制器是根据存放在存储器中的指令序列来操作的,并由一个程序计数器控制指令的执行。2、系统总线的分类(1)数据总线(Data Bus),它决定了处理器的字长。(2)地址总线(Address Bus),它决定系统所能直接访问的存储器空间的容量。(3)控制总线(Control Bus)3、中央处理器在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算

5、,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。4、微处理器,用于实现微型计算机的运算和控制功能,是微型计算机的核心;一台微型计算机由微处理器、内存储器、I/O接口电路以及总线构成;微型计算机系统则包括硬件系统和软件系统两大部分,其中硬件系统又包括微型计算机和外围设备。微处理器和指令系统一、8086微处理器1、8086是一种单片微处理芯片,其内部数据总线的宽度是16位,外部数据总线宽度也是16位,片内包含有控制计算机所有功能的各种电路。8086地址总线的宽度为20位,有1MB(220个存储单元)个存储单元寻址空间。8086CPU由总线接口部件BIU和执行部件EU组成。

6、BIU和EU的操作是异步的,为8086取指令和执行指令的并行操作体统硬件支持。2、寄存器结构8086微处理器包含有13个16位的寄存器和9位标志位。4个通用寄存器(AX,BX,CX,DX)4个段寄存器(CS,DS,SS,ES)4个指针和变址寄存器(SP,BP,SI,DI)指令指针(IP)1)、通用寄存器(1)8086含4个16位数据寄存器,它们又可分为8个8位寄存器,即:AX AH,ALBXBH,BLCXCH,CLDXDH,DL常用来存放参与运算的操作数或运算结果(2)数据寄存器特有的习惯用法AX:累加器。多用于存放中间运算结果。所有I/O指令必须都通过AX与接口传送信息;BX:基址寄存器。在

7、间接寻址中用于存放基地址;CX:计数寄存器。用于在循环或串操作指令中存放循环次数或重复次数;DX:数据寄存器。在32位乘除法运算时,存放高16位数;在间接寻址的I/O指令中存放I/O端口地址。2)、指针和变址寄存器SP:堆栈指针寄存器,其内容为栈顶的偏移地址;BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。SI:源变址寄存器DI:目标变址寄存器变址寄存器常用于指令的间接寻址或变址寻址。3)、段寄存器CS:代码段寄存器,代码段用于存放指令代码DS:数据段寄存器 ES:附加段寄存器,数据段和附加段用来存放操作数SS:堆栈段寄存器,堆栈段用于存放返回地址,保存寄存器内容,传递参数4)

8、、指令指针(IP)16位指令指针寄存器,其内容为下一条要执行的指令的偏移地址。5)、标志寄存器(1)状态标志:进位标志位(CF):运算结果的最高位有进位或有借位,则CF=1辅助进位标志位(AF):运算结果的低四位有进位或借位,则AF=1溢出标志位(OF):运算结果有溢出,则OF=1零标志位(ZF):反映指令的执行是否产生一个为零的结果符号标志位(SF):指出该指令的执行是否产生一个负的结果奇偶标志位(PF):表示指令运算结果的低8位“1”个数是否为偶数(2)控制标志位中断允许标志位(IF):表示CPU是否能够响应外部可屏蔽中断请求跟踪标志(TF):CPU单步执行方向标志DF:用来决定在串操作指

9、令执行时有关指针 HYPERLINK /search?word=%E5%AF%84%E5%AD%98%E5%99%A8&fr=qb_search_exp&ie=utf8 t _blank 寄存器发生调整的方向。二、8086指令系统(一)数据寻址方式1、立即寻址: 操作数(为一常数)直接由指令给出,(此操作数称为立即数),立即寻址只能用于源操作数例:MOV AX, 1C8FHMOV BYTE PTR2A00H, 8FH错误例: MOV 2A00H,AX ; 错误!指令操作例:MOV AX,3102H; AX3102H执行后,(AH) = 31H,(AL) = 02H2、寄存器寻址(1)操作数放在

10、某个寄存器中(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)偏移地址也可用符号地址来表示,如ADDR、VAR例: MOV AX ,2A00H MOV DX ,ES:2A00HMOV SI,TABLE_PTR4、间接寻

11、址 操作数的偏移地址(有效地址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)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H 则物理地址 = 60000H + 1000H + 2A00

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

13、误例: 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)或(DI)+8位或16位位移量指令操作例:MOV AX,DATADIBX若(DS)=8000H, (BX)=2000H, (DI)=1000H, DAT

14、A=200H则指令执行后(AH)=83021H, (AL)=83020H寄存器间接、寄存器相对、基址变址、相对基址变址四种寻址方式的比较: 寻址方式 指令操作数形式 寄存器间接 只有一个寄存器(BX/BP/SI/DI之一) 寄存器相对 一个寄存器加上位移量 基址变址 两个不同类别的寄存器 相对基址-变址 两个不同类别的寄存器加上位移量(二)指令地址寻址方式(了解有4类,能判断)简要判断依据(指令中间的单词):段内直接 short,near段内间接 word段间直接 far段间间接 dword(三)数据传送指令1、通用传送指令(1) MOV dest,src; destsrc传送的是字节还是字取

15、决于指令中涉及的寄存器是8位还是16位。具体来说可实现:MOV mem/reg1,mem/reg2指令中两操作数中至少有一个为寄存器 MOV reg,data ;立即数送寄存器 MOV mem,data ;立即数送存储单元 MOV acc,mem ;存储单元送累加器 MOV mem,acc ;累加器送存储单元 MOV segreg,mem/reg ;存储单元/寄存器送段寄存器 MOV mem/reg,segreg ;段寄存器送存储单元/寄存器MOV指令的使用规则IP不能作目的寄存器不允许memmem不允许segregsegreg立即数不允许作为目的操作数不允许segreg立即数源操作数与目的操

16、作数类型要一致当源操作数为单字节的立即数,而目的操作数为间址、变址、基址+变址的内存数时,必须用PTR说明数据类型。如:MOV BX,12H 是错误的。(2)、堆栈指令什么是堆栈?按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位进行压入弹出操作。规定由SS指示堆栈段的段基址,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。压栈指令PUSHPUSH src ; src为16位操作数例:PUSHAX;将AX内容压栈执行操作:(SP)-1高字节AH(SP)-2低字节AL(SP)(SP)- 2注意进栈方向是高地址向低地址发展。弹出指令POPPOPde

17、st 例:POP BX;将栈顶内容弹至BX执行操作:(BL)(SP)(BH)(SP)+1(SP)(SP)+2堆栈指令在使用时需注意的几点:堆栈操作总是按字进行不能从栈顶弹出一个字给CS堆栈指针为SS:SP,SP永远指向栈顶SP自动进行增减量(-2,+2)(3)、交换指令XCHG格式:XCHG reg,mem/reg功能:交换两操作数的内容。要求:两操作数中必须有一个在寄存器中;操作数不能为段寄存器和立即数;源和目地操作数类型要一致。举例: XCHGAX,BXXCHG2000,CL2、输入输出指令只限于用累加器AL或AX来传送信息。功能: (累加器)I/O端口输入指令IN格式:IN acc,PO

18、RT ;PORT端口号0255HIN acc,DX ;DX表示的端口范围达64K例:IN AL,80H ;(AL)(80H端口)IN AL,DX ;(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、目标地址传送指令LEA传送偏移地址格式:LEA reg,mem ; 将指定内存单元的偏移地址送到指定寄存器要求:源操

19、作数必须是一个存储器操作数;目的操作数必须是一个16位的通用寄存器。例:LEA BX,SI+10H设:(SI)=1000H则执行该指令后,(BX)=1010H注意以下二条指令差别:LEA BX,BUFFER MOV BX,BUFFER前者表示将符号地址为BUFFER的存储单元的偏移地址取到 BX中;后者表示将BUFFER存储单元中的内容取到 BX中。下面两条指令等效:LEA BX,BUFFERMOV BX, OFFSET BUFFER其中OFFSET BUFFER表示存储器单元BUFFER的偏移地址。二者都可用于取存储器单元的偏移地址,但LEA指令可以取动态的地址,OFFSET只能取静态的地址

20、。(四)算术运算指令加法指令不带进位的加法指令ADD格式: ADD acc,dataADD mem/reg,dataADD 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

21、判断溢出与进位从硬件的角度:默认参与运算的操作数都是有符号数,当两数的符号位相同,而和的结果相异时有溢出,则OF=1,否则OF=0带进位的加法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标志。减法指令(1)

22、不考虑借位的减法指令SUB格式: SUB dest, src操作: dest(dest)-(src)注:1.源和目的操作数不能同时为存储器操作数2.立即数不能作为目的操作数指令例子:SUB AL,60HSUB BX+20H,DXSUB AX,CX(2)考虑借位的减法指令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 CLDE

23、C BYTE PTRDI+2DEC SI (4)求补指令NEG格式: NEG opr操作: opr 0-(opr)对一个操作数取补码相当于用0减去此操作数,故利用NEG指令可得到负数的绝对值。例:若(AL)=0FCH,则执行 NEG AL后,(AL)=04H,CF=1(5)比较指令CMP格式: CMP dest, src操作: (dest)-(src)CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。指令例子:CMP AL,0AHCMP CX,SICMP DI,BX+03(五)逻辑运算和移位指令1、逻辑运算指令(1)逻辑与AND对两个操作数进行按位逻辑“与”操作。格式

24、: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 mem/reg例:NOT CXNOT BYTE PTRDI(4)逻辑异或XOR对两个操作数按位进行”异或”操作。格式:XOR dest, src用途:对reg清零(自身异或)把reg/mem的某几位变反

25、(与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)非循环移位指令 算术左移指令 SAL(Shift Arithmetic Left) 算术右移指令 SAR(Shift Arithmetic Right) 逻辑左移指令 SHL(Shift Left) 逻辑右

26、移指令 SHR(Shift Right)这4条指令的格式相同,以SAL为例:CL ;移位位数大于1时SAL mem/reg;移位位数等于1时算术移位把操作数看做有符号数; 逻辑移位把操作数看做无符号数。移位位数放在CL寄存器中,如果只移1位,也 可以直接写在指令中。例如: MOV CL,4 SHR AL,CL ;AL中的内容右移4位影响C,P,S,Z,O标志。结果未溢出时: 左移1位操作数*2右移1位操作数/2例:把AL中的数x乘10因为10=8+2=23+21,所以可用移位实现乘10操作。程序如下:MOV CL,3SAL AL,1 ; 2xMOV AH,AL SAL AL,1 ; 4xSAL

27、 AL,1 ; 8xADD AL,AH ; 8x+2x = 10 x(六)控制转移指令转移指令(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,则转移

28、JO ;OF=1,则转移JNO ;OF=0,则转移根据组合条件设置的条件转移指令这类指令主要用来判断两个数的大小。判断无符号数的大小JA 高于则转移 条件为: CF=0ZF=0,即ABJNA/JBE 低于或等于则转移条件为: CF=1ZF=1,即ABJB AB则转移JNB AB则转移判断有符号数的大小JG ;大于则转移(AB) 条件为: (SFOF=0)ZF=0JGE;大于或等于则转移(AB)条件为: (SFOF=0)ZF=1JLE;小于或等于则转移(AB) 条件为: (SFOF=1)ZF=1JL;小于则转移(AB条件为: (SFOF=1)ZF=02、循环控制指令用在循环程序中以确定是否要继续

29、循环。循环次数通常置于CX中。转移的目标应在距离本指令-128+127的范围之内。循环控制指令不影响标志位。(1)LOOP格式:LOOP label操作:(CX)-1CX; 若(CX)0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 LOOP指令与下面的指令段等价: DEC CX JNZ label3、过程调用指令(1)调用指令CALL一般格式:CALL sub ;sub为子程序的入口4、中断指令(1)INT n 执行类型n的中断服务程序,N=0255(七)处理器控制指令1、标志位操作(1)CF设置指令 CLC 0CF STC 1CF CMC CF变反(2)DF设置指令 C

30、LD 0DF (串操作的指针移动方向从低到高)STD 1DF (串操作的指针移动方向从高到低)(3)IF设置指令 CLI 0IF (禁止INTR中断) STI 1IF (开放INTR中断) HLT(halt)执行HLT指令后,CPU进入暂停状态。汇编语言及编程计算机语言一般分为三种不同的层次:机器语言、汇编语言、高级语言。其中汇编语言,执行速度快、保密性好,可读性差,可移植性差,编程麻烦;高级语言,执行速度慢、保密性差、可读性好、可移植性好、编程简单。一、伪指令CPU指令与伪指令之间的区别:(1)CPU指令是给CPU的命令,在运行时由CPU执行,每条指令对应CPU的一种特定的操作。而伪指令是给

31、汇编程序的命令,在汇编过程中由汇编程序进行处理。(2)汇编以后,每条CPU指令产生一一对应的目标代码;而伪指令则不产生与之相应的目标代码。1、数据定义伪指令(1)数据定义伪指令的一般格式为:变量名 伪指令 操作数,操作数 DB 用来定义字节(BYTE)DW 用来定义字(WORD)DD 用来定义双字(DWORD)(2)操作数的类型可以是:常数或常数表达式例如: DATA_BYTE DB 10,5,10H DATA_WORD DW 100H,100,-4 DATA_DW DD 2*30,0FFFBH可以为字符串(定义字符串最好使用DB)例如:char1 DB AB也可以为变量还可以为?号操作符例如

32、:X DB 5,?,6?号只是为了给变量保留相应的存储单元,而不赋予变量某个确定的初值。重复次数:N DUP(初值,初值)例如:ZERO DB 2 DUP(3,5)XYZ DB 2 DUP(0,2 DUP(1,3),5)在伪操作的操作数字段中若使用$,则表示的是地址计数器的当前值。2、补充内容:(1)类型 PTR 地址表达式例如:MOV BYTE PTR BX,12HINC BYTE PTR BX注意:单操作数指令,当操作数为基址、变址、基+变的时候必须定义3、符号定义伪指令(1)EQU格式:名字 EQU 表达式EQU伪指令将表达式的值赋予一个名字,以后可用这个名字来代替上述表达式。例:CON

33、STANT EQU 100NEW_PORT EQU PORT_VAL+1(2) =(等号)与EQU类似,但允许重新定义例:EMP=7;值为7EMP=EMP+1;值为8(3)LABELLABEL伪指令的用途是定义标号或变量的类型格式:名字 LABEL 类型变量的类型可以是BYTE,WORD,DWORD。标号的类型可以是NEAR或FAR4、段定义伪指令与段有关的伪指令有: SEGMENT、ENDS、ASSUME、ORG(1)段定义伪指令的格式如下:段名 SEGMENT 定位类型 组合类型 类别 段名 ENDSSEGMENT和ENDS 这两个伪指令总是成对出现,二者前面的段名一致。二者之间的删节部分

34、,对数据段、附加段及堆栈段,一般是符号、变量定义等伪指令。对于代码段则是指令及伪指令。此外,还必须明确段和段寄存器的关系,这可由ASSUME语句来实现。(2)ASSUME格式:ASSUME 段寄存器名:段名,段寄存器名:段名,ASSUME伪指令告诉汇编程序,将某一个段寄存器设置为某一个逻辑段址,即明确指出源程序中逻辑段与物理段之间的关系。(3)ORG伪指令ORG规定了段内的起始地址或偏移地址,其格式为: ORG 表达式的值即为段内的起始地址或偏移地址,从此地址起连续存放程序或数据。5、汇编程序的一般结构汇编语言源程序的语句结构一般由标号、操作码、操作数、注释4部分组成。如:指令语句: 【标号:

35、】 助记符(操作码) 【操作数】 【;注释】伪指令语句: 【名字】 定义符(操作码) 【操作数】 【;注释】DATA SEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABGN: MOV AX ,DATA MOV DS,AX . MOV AH,4CH INT 21HCODE ENDSEND BGN二、程序设计顺序程序的设计例1 对于三个无符号数86H、34H、21H,编写86H*34H-21H的程序。DATA SEGMENTNUM DB 86H,34H,21HRESULT DW ?DATA ENDSCODE SEGMENT ASSUME CS:C

36、ODE,DS:DATASTART:MOV AX,DATA MOV DS,AX LEA SI,NUM LEA DI,RESULT MOV AL,SI MOV BL,SI+1MUL BL MOV BL,SI+2 MOV BH,0 SUB AX,BX MOV DI,AX MOV AH,4CH INT 21HCODE ENDS END START分支程序的设计例2 将数据区中以字节变量BUFFER为首地址的100 个单元清0。DATA SEGMENT BUFFER DB 100 DUP(?) COUNT DB 100DATA ENDSSTACK SEGMENT DW 32 DUP(?)STACK EN

37、DSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AXMOV CL,COUNT LEA BX,BUFFERAGAIN:MOV BX,0 INC BX CMP BX,COUNT JB AGAINCODE ENDS END START 例3 在DATA1开始的80个单元中,存放80位同学的成绩(0100),试统计=90、80-90、 70-79、60-69以及60的人数。结果存放在DATA2开始的单元中。DATA SEGMENT DATA1 DB 80 DUP(?

38、) DATA2 DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV CX,80 LEA SI,DATA1 LEA DI,DATA2AGAIN: MOV AL,SI CMP AL,90 JC NEXT1 INC BYTE PTRDI JMP STONEXT1:CMP AL,80 JC NEXT2 INC BYTE PTRDI+1 JMP STONEXT2:CMP AL,70 JC NEXT3 INC BYTE PTRDI+2 JMP STONEXT3:CMP AL,60 JC

39、NEXT4 INC BYTE PTRDI+3 JMP STONEXT4:INC BYTE PTRDI+4 STO:INC SI LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS END START子程序调用例5: 二进制数(0-F)转换成ASCII(0-F)的子程序。BIN2ASC PROC ;要转换的数在AL的低四位 ;转换结果仍在AL中 CMP AL, 9 JA A2F ADD AL, 30H JMP DONE A2F: ADD AL, 37H DONE: RETBIN2ASC ENDP调用方法:(在主程序中) MOV AL, 0CH CALL BIN2ASC

40、 ; (AL中有0CH的ASCII码43H, C)MOV AH,02H INT 21H常见程序实例例6:一个十六进制数ASCII码(用于输出)DATA SEGMENT BUFF DW 4FB6H ASCC DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV CL,5 LEA DI,ASCC+4 XOR DX,DX MOV AX,BUFF MOV BX,0AHAGAIN:DIV BX ADD DL,30HMOV DI,DL DEC DI AND AX,AX JZ STO MOV

41、 DL,0 LOOP AGAINSTO:MOV DI+6,24HMOV DX,SEGMENT ASCCMOV AH,09HINT 21HMOV AX,4CH INT 21HCODE ENDSEND START例7:在数据段,偏移地址为LIST开始的顺序100个单元中,每个单元存放了一个8位无符号数,试从中找出最大数放在AL中DATA SEGMENTLIST DB ,DATA ENDSCODE SEGMENTSTART:MOV AX, SEG LISTMOV DS, AXMOV SI, OFFSET LISTMOV CX, 99MOV AL, SIGOON:CMP AL, SIJNC NEXTM

42、OV AL,SI+1NEXT:INC SILOOP GOONMOV AH,4CHINT 21HCODE ENDSEND START总线和总线技术总线按其信号线性质不同分为数据线DB、地址总线AB和控制总线CB。其中:DB是双向总线,用于把数据送入或送出CPU。DB的宽度决定了每次能同时传送的二进制位数。AB为CPU发出的单向总线,用于寻址存储单元或I/O端口,它决定数据送往或来自何处。AB的宽度决定了计算机系统所能寻址的最大物理存储空间。CB用于对DB、AB零点使用情况及信息流实施控制。它包括存储器和I/O读写控制线、总线仲裁线、数据传输握手线、中断和DMA方式线等。了解8086/8088CP

43、U的时序有利于深入了解指令的执行过程,在编写源程序时,适当选取指令,以缩短指令的存储空间和执行时间,并且有利于正确实现CPU与存储器或I/O连接时的时序配合,在实时控制系统中,有利于估计CPU完成操作需要的时间,以便与控制过程相配合。在CPU时序中有三个概念要清楚,一个时钟周期是指控制微处理器工作的时钟信号的一个周期(一负脉冲与一正脉冲的时间和)。8086/8088的时钟信号由8284芯片提供。 一个总线周期是指8086CPU 通过总线对外部(存储器或 I/O 接口)进行一次访问所需的时间。8086的一个总线周期包括 4 个时钟周期,即 T1、T2、T3 和T4,又称为 4 个T状态。读写总线

44、周期在这 4 个T状态下完成的工作是不同的,于是就有了读总线周期和写总线周期。 (补充:80286之后的CPU的一个总线周期由T1、T2两个时钟周期构成) 一个实际的总线周期除 4 个 T 状态外还可能在 T3 和 T4 之间插入若干个等待周期 Tw。 一个指令周期是指CPU执行某一条指令所需的时间(包括取指令的总线周期和执行指令所代表的具体操作所需的时间)。 存储器一、知识结构图只存放二进制数存放程序和数据SRAMRAMDRAM存储器作用本章知识要点掩模ROM半导体存储器芯片分类PROMROM线译码部分译码与系统连接地址分配、片选逻辑、控制选择全译码计算芯片数主存储器设计引脚功能存储容量存储

45、器芯片EEROMEPROMPROM二、存储器体系结构微型机系统中的内存的每个单元为8位。为了区分不同的存储单元,每个内存单元都有一个地址编号。即地址是内存中每个单元的代号。存储器的数据宽度扩充和字节数扩充,在微型机系统中,需要的存储器容量常常比单个芯片的容量大,所以需要扩充,这体现在两方面:数据宽度的扩充:如将8位的存储器通过增加芯片扩展成16位、32位的存储器。字节数的扩充:如将1MB的存储器通过增加芯片扩展成16MB、32MB的存储器。当进行存储体扩展时,往往需要译码芯片的介入,其中,最常使用的译码芯片是74LS138。其功能表为进行扩展时,存储体的地址线接CPU地址线的低位,地址线高位进行译码工作。而高位的译码又可以分为:线译码、部分译码和全译码。其中最为常用的是全译码方式,下面是全译码的实例图。由8片2764构成的ROM系统中,CPU的低13位线连接2764的地址线,数据线并行连接,A13-A15 进行译码工作,高4位地址线控制138芯

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论