微机原理基本概念复习

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1、字节,字概念,1字节=8位,2、字长概念:传微处理器一次送二进制数据的位数(总线宽度)。3、地址空间概念:16根地址线—64K,20根地址线—1M空间4、进制间的转换:将十进制数25.5转换为二级制数5、数值数据的表示:有符号数:补码,n位补码的范围无符号数:FFFFH=655356、BCD码:789的压缩BCD码789H7、ASCII码:789的ASC码373839H8、求补运算概念9、8086CPU从功能上来说分成两大部分:总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit)总线接口部件由下列4部分组成:①4个段地址寄存器(CS、DS、ES、SS)②16位的指令指针寄存器IP(InstructionPointer)③20位的地址加法器10辑段概念——8086CPU的内部结构是16位的,即所有的寄存器都是16位的,而外部寻址空间为1M,需要20位地址线。为了能寻址1M空间。8086把1M字节空间划分成若干个逻辑段。11逻辑地址概念——2000H:5F62H,则其对应的物理地址:25F62H12堆栈指针:SP与段寄存器SS一起确定在堆栈操作时,堆栈在内存中的位置。SS和SP的初始值决定了堆栈区的大小13状态标志的意义:即SF、ZF、PF、CF、AF和OF148086引脚:MN/MX、AD15~AD0地址/数据分时复用引脚NMI(Non-MaskableInterrupt)不可屏蔽中断请求,输入、上升沿有效、INTR(InterruptRequest)可屏蔽中断请求,输入、高电平有效,有效时,表示请求设备向CPU申请可屏蔽中断,该中断请求是否响应受控于IF(中断允许标志)、可以被屏蔽掉INTA——RESET(复位)复位请求,输入、高电平有效,复位后CS=FFFFH、IP=0000H,所以自启动程序入口在物理地址FFFF0HINTA(InterruptAcknowledge)可屏蔽中断响应,输出、低电平有效,有效时,表示来自INTR引脚的中断请求已被CPU响应,CPU进入中断响应周期。ALE(AddressLatchEnable)地址锁存允许,输出、三态、高电平有效,脚高有效时,表示复用引脚:AD15~AD0和A19/S6~A16/S3正在传送地址信息,由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来M/IO(InputandOutput/Memory)I/O或存储器访问,输出、三态,该引脚输出高电平时,表示CPU将访问存储器,这时地址总线A19~A0提供20位存储器地址,该引脚输出低电平时,表示CPU将访问I/O端口,这时地址总线A15~A0提供16位I/O口地址15多字节数据存放方式:图中0002H“字”单元的内容为:[0002H]=1234H0002H号“双字”单元的内容为:[0002H]=78561234H16物理地址和逻辑地址的转换例2.1设代码段寄存器CS的内容为1000H,指令指针寄存器IP的内容为2500H,即CS=1000H,IP=2500H,则访问代码段存储单元的物理地址为:17指令周期:是指一条指令经取指、译码、读写操作数到执行完成的过程。若干总线周期组成一个指令周期18总线周期是指CPU通过总线操作与外部(存储器或I/O端口)进行一次数据交换的过程8086的基本总线周期需要4个时钟周期,4个时钟周期编号为T1、T2、T3和T4总线周期中的时钟周期也被称作“T状态”,时钟周期的时间长度就是时钟频率的倒数当需要延长总线周期时插入等待状态Tw,CPU进行内部操作,没有对外操作时,其引脚就处于空闲状态Ti8086如果工作频率1MHZ,1个基本总线周期需要多长时间。19指令代码由操作码和操作数两部分组成寻址方式:立即数寻址MOVAX,14寄存器寻址:MOVDS,AX直接寻址:MOVAX,[2000H],MOVBX,BUFFER寄存器间接寻址MOVAX,[BX]寄存器相对寻址MOVAX,[SI+06H]基址变址寻址方式MOVAX,[BX+SI]相对基址变址MOVAX,[BX+DI+6]隐含寻址MULBL;(AL)×(BL)→AX隐含了被乘数AL和乘积AX20存储器寻址方式中的变量WVARDW1234H;定义16位变量WVAR,具有初值1234H21注意点1.区别立即数寻址和直接寻址MOVAX,126MOVAX,[126]2.区别寄存器寻址和寄存器间接寻址MOVAX,BXMOVAX,[BX]3.双操作数指令中,不能同为存储器操作数。4.CS不能为目的寄存器。最基本的传送指令(MOV)堆栈指令(PUSH,POP)数据交换指令(XCHG)换码指令XLAT非法指令的主要现象:两个操作数的类型不一致无法确定是字节量还是字量操作两个操作数都是存储器MOV[2000H],[3000H]立即数直接送段寄存器MOVDS,3000H目标操作数用立即数方式MOV2000H,AL两个操作数都是段寄存器MOVDS,ES在绝大多数双操作数指令中,目的操作数和源操作数必须具有一致的数据类型,或者同为字量,或者同为字节量,否则为非法指令两个操作数类型不一致MOVAL,050AH;非法指令,修正:;movax,050ahMOVSI,DL;非法指令,修正:;movdh,0;movsi,dx当无法通过任一个操作数确定是操作类型时,需要利用汇编语言的操作符显式指明MOV[BX+SI],255;非法指令,修正:;movbyteptr[bx+si],255;byteptr说明是字节操作;movwordptr[bx+si],255;wordptr说明是字操作8086/8088指令系统除串操作指令外,不允许两个操作数都是存储单元(存储器操作数)MOVbuf2,buf1;非法指令,修正:;假设buf2和buf1是两个字变量;movax,buf1;movbuf2,ax;假设buf2和buf1是两个字节变量;moval,buf1;movbuf2,al8086指令系统中,能直接对段寄存器操作的指令只有MOV等个别传送指令,并且不灵活MOVDS,ES;非法指令,修正:;movax,es;movds,axMOVDS,100H;非法指令,修正:;movax,100h;movds,axMOVCS,[SI];非法指令;指令存在,但不能执行例3-13把BLOCK1地址开始的10个字节数据传送到BLOCK2地址开始的10个字节单元处。MOVCX,10MOVSI,OFFSETBLOCK1MOVDI,OFFSETBLOCK2NEXT:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNZNEXTHLT进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部用堆栈交换AX与CX的值。pushaxpushcxpopaxpopcx交换指令XCHG(xchgal,byteptrwvar+1;ax=5599h,wvar=6611h;“byteptrwvar+1”强制为字节量,只取高字节与AL类型交换,否则数据类型不匹配例3-18内存的数据段有一张0~9的平方表,首地址为TABLE,如图所示,用换码指令实现求数字4的平方。MOVBX,OFFSETTABLEMOVAL,4XLAT加法指令2、减法指令3、乘法指令4、除法指令加法指令:ADD,ADC和INC减法指令:SUB,SBB,DEC,NEG和CMP他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位[例3-32]在数据段从BLOCK开始的存储单元中存放了两个8位无符号数,试比较它们的大小,将较大者传送到MAX单元。LEABX,BLOCKMOVAL,[BX]INCBXCMPAL,[BX]JNCDONEMOVAL,[BX]DONE:MOVMAX,ALHLT逻辑指令AND、OR、XOR和TEST屏蔽AL寄存器的低四位。MOVAL,0FFH11111111ANDAL,0F0H∧1111000011110000例3:使某数的第4、5位置1。MOVAL,03H00000011ORAL,30H∨0011000000110011[例3-47]判断DATA单元的数据是否为0。MOVAX,DATAORAX,AXJZZERO……ZERO:…….例4:使某数的D1、D0位取反,其它位不变。MOVAL,11H00010001XORAL,03H⊕00000011=00010010AND与TEST指令的关系,同SUB与CMP指令的关系一样例7:检测AL中的最低位是否为1,若为1则转移。MOVAL,data01000001TESTAL,01H∧00000001JNZNext00000001Next:MOVBL,0TEST通常用于检测一些条件是否满足,但又不希望改变原来操作数的情况,该指令后通常带有条件转移指令。移位指令:移位指令的第一个操作数是指定的被移位的操作数,可以是寄存器或存储单元;后一个操作数表示移位位数:该操作数为1,表示移动一位该操作数为CL,CL寄存器值表示移位位数(移位位数大于1只能CL表示)SALSHLSARSHR循环移位指令类似移位指令,但要将从一端移出的位返回到另一端形成循环。分为:ROLreg/mem,1/CL;不带进位循环左移RORreg/mem,1/CL;不带进位循环右移RCLreg/mem,1/CL;带进位循环左移RCRreg/mem,1/CL;带进位循环右移循环移位指令按指令功能设置进位标志CF,但不影响SF、ZF、PF、AF标志,OF只当CNT=1时有效,移位后当最高有效位发生变化时(如1变0)OF=1,否则OF=0。将DX.AX中32位数值左移一位shlax,1rcldx,1控制转移指令JMPJZJNZ例3.23判断是否为字母Y寄存器AL中是字母Y(含大小写),则令AH=0,否则令AH=-1cmpal,’y’;比较AL与小写字母yjenext;相等,转移cmpal,’Y’;不相等,;继续比较AL与大写字母Yjenext;相等,转移movah,-1;不相等,令AH=-1jmpdone;无条件转移指令next:movah,0;相等的处理:令AH=0done:……[例3-68]在内存中有一个首地址为ARRAY的数据区存放了200个8位有符号数,统计其中正数、负数、0的个数,并分别将统计结果存入PLUS、MINUS和ZERO单元中。XORAL,ALMOVPLUS,ALMOVMINUS,ALMOVZERO,ALLEASI,ARRAYMOVCX,200CLDLLAB:LODSBORAL,ALJSMLABJZZLABINCPLUSJMPNEXTMLAB:INCMINUSJMPNEXTZLAB:INCZERONEXT:DECCXJNZLLABHLTLOOPlabel;循环指令IRET伪指令:DB,DW,byteptr例2:操作数可以是字符串,例如STRDB‘HELLO’汇编后的情况如图:某数据段定义为DATASEGMENTS1DB0,1,2,3,4,5S2DB‘12345’COUNTEQU$-S1S3DBCOUNTDUP(2)DATAENDS画出该数据段在存储器中的存储形式DOS系统功能调用介绍(1)从键盘输入一个字符(功能号=1)MOVAH,1INT21HAL中有键入的字符(1)在显示器上显示一个字符(功能号=2)MOVAH,2MOVDL,要显示的字符INT21H例:在显示器上显示一个字符‘A’MOVAH,2MOVDL,’A’;或MOVDL,41HINT21H(2)显示字符串(功能号=9)MOVAH,9LEADX,字符串INT21H注意:被显示的字符串必须以’$’结束。4.6.2分支程序设计4-31求符号字节数X的绝对值,X用补码表示DATASEGMENTXDB-50DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,X;取XTESTAL,80H;测试符号位JZDONE;若

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功