《工业用微型计算机》串讲资料一复习进程.doc
Good is good, but better carries it.精益求精,善益求善。工业用微型计算机串讲资料一-第一章微型计算机基础本章主要介绍了微型计算机的发展、系统组成和微处理器,同时也分析了计算机中涉及的常见编码形式和数制的相关内容。通过本章的学习,了解典型的微处理器特点,以及各自的差异,会熟练应用数制和编码的有关知识,解决实际问题。同时也要了解微型计算机的发展,从而在整体上把握计算机的由来和微型计算机在整个计算机中的地位。一、重点提示本章的重点是掌握计算机中无符号数和有符号数的表示方法;各种进制的转换关系;CPU中的功能结构和各个寄存器的用途;存储器的结构;最后能理解计算机的工作原理。二、难点提示1计算机中的数制和编码2无符号数和有符号数的表示方法3各种进制的转换关系4CPU的结构和寄存器5存储器的结构1微型计算机的发展2计算机中的数制和编码系统(1)无符号数的表示和运算(2)带符号数的表示方法(3)8位与16位二进制数的范围(4)计算机中的字符编码3微型计算机系统的组成(1)微型计算机系统的构成(2)工业微型计算机概况(3)微型计算机中的外围设备4微处理器(1)Intel8088/8086微处理器(2)Intel80286、80386、80486微处理器(3)Pentium微处理器(4)CPU主板和CPU卡一、单项选择题1若十进制数据为137.5则其八进制数为()A.89.8B211.4C211.5D1011111.101答案B【解析】十进制数转化为八进制数时,整数部分和小数部分要用不同的方法来处理。整数部分的转化采用除基取余法:将整数除以8,所得余数即为八进制数的个位上数码,再将商除以8,余数为八进制十位上的数码如此反复进行,直到商是O为止;对于小数的转化,采用乘基取整法:将小数乘以8,所得积的整数部分即为八进制数十位上的1数码,再将此积的小数部分乘以8,所得积的整数部分为八进制数百分位上的数码,如此反复直到积是0为止。此题经转换后得八进制数为211.4。2若十进制数为132.75,则相应的十六进制数为()A.21.3B84CC24.6D84.6答案B。【解析】十进制数转化为十六进制数时,采用除16取余法;对于小数的转化,采用乘16取整法:将小数乘以16,所得积的整数部分转换为十六进制。此题经转换后得十六进制数为84C。3若十六进制数为A3.5,则相应的十进制数为()A172.5B179.3125C163.3125D188.5答案C【解析】将十六进制数A3.5转换为相应的十进制数,可采用乘幂相加法完成,即:。4若二进制数为1111.101,则相应的十进制数为()A15.625B15.5C14.625D14.5答案A【解析】将二进制数1111.101转换为相应的十进制数,可采用乘幂相加,法完成,即:。5若十六进制数为B5.4,则相应的十进制数为()A176.5B176.25C181.25D181.5答案C【解析】将十六进制数B5.4转换为相应的十进制数,可采用乘幂相加祛完成,即:(1)十进制转换为二进制方法:整数部分除2取余,小数部分乘2取整。(2)二进制转换为八进制方法:以小数点为界,整数部分从右向左每三位分为一组,最左端不够三位补零;小数部分从左向右每三位分为一组,最右端不够三位补零;最后将每小组转换为一位八进制数。(3)二进制转换为十六进制方法:以小数点为界,整数部分从右向左每四位分为一组,最左端不够四位补零;小数部分从左向右每四位分为一组,最右端不够四位补零;最后将每小组转换为一位十六进制数。6如果X为负数,由x补求-x补是将()Ax补各值保持不变BX补符号位变反,其他各位不变Cx补除符号位外,各位变反,末位加1pX-补连同符号位一起各位变反,末位加1答案D【解析】不论X是正数还是负数,由x补求-x补的方法是对X补求补,即连同符号位一起按位取反,末位加1。7若x补=0.1101010,则x原=()A.1.0010lOlB.I.0010llOC.0.0010110D.0.llO1OlO答案D【解析】正数的补码与原码相同,负数的补码是用正数的补码按位取反,末位加1求得。此题中X补为正数,则X原与X补相同。8若x=1011,则x补:()A01011B1011C0101D10101答案A【解析】x为正数,符号位为0,数值位与原码相同,结果为01011。9若x补=1.1011,则真值X是()A-0.1011B-0.0101C0.1011D.O.0101答案B【解析】x补=1.1011,其符号位为1,真值为负;真值绝对值可由其补码经求补运算得到,即按位取后得0.0t00,在末位加1得O,0101,故其真值为-0.0101。10.设有二进制数x=-llOlllO,若采用8位二进制数表示,则x补()A.1tl01101B.10010011C00010011D10010010答案D【解析】x=-1101110为负数,负数的补码是将二进制位按位取反后在最低位上加1,故x补=10010010。11.若Ex-1补-0.1011,则真值X=()A0.1011B0.0101C1.1011D.l.0101答案A【解析】x补=0.1011,其符号位为0,-真值为正;真值就是0.1011。12.若定点整数64位,含1位符号位,补码表示,则所能表示的绝对值最大负数为()A-264B-(264_L1)C-263D-(263-1)答案C【解析】字长为64位,符号位为1位,则数值位为63位。当表示负数时,数值位全0为负绝对值最大,为。13.8位二进制无符号数的表示范围是()A0128B-127+128C-128+127D0255答案D【解析】8位二进制无符号数的表示范围是02558位二进制符号数的表示范围是-128+12714.一个n+l位整数原码的数值范围是()ABCD答案D【解析】“O”是一个特殊的状态15.9的ASCII码是()A39B41HC28HD39H答案D【解析】09的ASCII码是30H39H;AZ的ASCII码是41H5AH;az的ASCII码是61H7AH。16.在按字节编址的存储器中,每个编址单元中存放()A1位B8位C16位D32位答案B【解析】在按字节编址在存储器中,每个编址单元的容量为一个字节,一个字节由8位二进制数组成,一个字节存储单元可以存放8位二进制位。17设当前的CS=8915H,IP=0100H,那么当前取指令的首地址是从()开始的。A.8A150HB89250HC18195HD0100H答案B【解析】这个题主要考查了我们2个主要的知识结构,一个是地址合成公式:一个20位物理地址=基址×16+偏移地址另一个是取指令的首地址在代码段,代码段的基址在CS寄存器,偏移地址在IP中所以取指令的首地址:8915H×16+0100H=89150H+0100H=89250H。18.设当前的DS=D200H,SI=2E00H,取数据又是从具体的()存储单元获得的。AD2E00HB2E00HCD4E00HDD2000H答案C【解析】数据段基址在DS寄存器,偏移地址可以由SI给出,所以:数据的存储单元物理地址=D2000H+2E00H=D4E00H。19如果把地址用CS:IP形式表达,具体写成为2200H:4000H,具体的物理地址是()A22000HB4000HC6200HD26000H答案D【解析】物理地址=22000H+4000H=26000H20.若寄存器AX,BX的内容分别为1110H,5678H时,依次执行PUSHAX,PUSHBX,POPAX,POPBX后,则寄存器AX和BX的内容分别为()A.1110H,7856HB.5678H,1234HC.5678H,1110HD.7856H,1011H答案C【解析】基本操作及地址的变化规律:入栈:先修改指针SP=SP-1,再把数据放入堆栈出栈:先把数据从堆栈中取出,再修改指针SP=SP+121.8086CPU中断请求线有()A.1条B2条C4条D8条答案B【解析】8086CPU中断请求线有INTR和NMI两条。它们都是外部中断申请输入端。22当8086处于单步工作方式时,必须为1的标志位的是()AIFBSFCTFDOF答案C【解析】TF称为跟踪标志位。如果让8086处于单步工作方式,则TF需设置为1。若想让CPU工作在全速运行状态下,则要设成O。23二进制数00000110的8421BCD码表示的十进制数是()A3B4C5D6答案D【解析】8421BCD码中的O9对应的二进制数应该熟记:8421BCD码二进制数O000010001200103001140100501016011070111810009100124.8086微处理器的引脚是属于()A输入信号B数据信号C控制信号D地址信号答案C【解析】在8086微处理器的控制引脚中,要重点掌握读写控制信号的引脚和它们的方向。引脚和引脚本身都是输出引脚,但是在这2个引脚的信号输出之后,接下来的数据总线上的信号传送方向就是从CPU片外取回数据这是在读控制信号输出之后,而CPU把内部的数据输出给片外这是在写信号之后的动作过程。二、填空题1在CPU的状态寄存器中,常设置以下状态位:零标志位(Z),负标志位(N),和。答案溢出标志位(V)进位或借位标志位(C)【解析】在CPU中专门设置有一个存储计算机状态的寄存器,称为状态寄存器SR,其中通常包括如下标志位:零标志位(Z)、负标志位(N)、溢出标志位(V)、进位或借位标志位(C)等。2IP是寄存器,主要作用是。答案指令指针用以存放预取指令的偏移地址。【解析】IP是一个很主要的寄存器。CPU从代码段中偏移地址为IP的内存单元中取出指令代码的一个字节,然后IP自动加1,指向指令代码的下一个字节。用户不能编程直接访问IP。3.8086内部有个位的寄器,按其功能,可以分为三大类:第一类是寄存器(8个),第二类是寄存器(4个),第三类是寄存器(2个)。答案1416通用段控制【解析】8086内部有14个16位的寄存器。在通用寄存器中包括数据寄存器,地址寄存器,变址寄存器等3小类。段寄存器主要是存储器的四段:数据段基址寄存器DS,代码段基址寄存器CS,堆栈段基址寄存器SS,附加数据段基址寄存器ES。控制寄存器主要包括指令指针寄存器IP和标志寄存器FLAGS。4已知x=0101,y=0101,请用补码一位乘法中的Booth算法计算xy2=。答案-25【解析】x=0101,x补=0101,-X补=1011,y=-0101,y补=1011循环i步骤乘积(RORlP)O初始值0000101101减0101101110110右移1位1101110112无操作110111011右移1位1110111013加0101001111101右移1位0001111104减0101110011110右移1位111001111所以结果为xy补=11101111,真值为-00011001,十进制值为-25。补码一位乘法中的Booth算法是一种对带符号数进行乘法运算的十分有效的处理方法,采用相加和相减的操作计算补码数据的乘积。做法是从最低位开始,比较相临的数位,相等时不加不减,只进行右移位操作;不相等(01)时加乘数,不相等(10时)相减乘数,再右移位;直到所有位均处理完毕。5已知x=0011,y=-0101,试用原码一位乘法求xy=。答案-00001111B【解析】x原=00011,y原=10101,结果的符号位1O=1循环步骤乘积(RORl)O初始值000001011加001100110101右移1位000110102加O00011010右移1位000011013加001100111101右移1t位000111104加000011110右移1位00001111所以结果为-00001111B。原码一位乘法中,符号位与数值位是分开进行计算的。运算结果的数值部分是乘数与被乘数数值位的乘积,符号是乘数与被乘数符号位的异或。原码一位乘法的每一次循环的操作是最低位为1,加被乘数的绝对值后右移1位;最低位为0,加0后右移1位。几位乘法就循环几次。6设(DS)=2000H,(SS)=2410H,(AX)=2510H,(SP)=0206H,则指令PUSHAX执行之后对应的AX低8位()和高8位()分别放在()和()2个物理地址中。答案10H25H20204H20205H【解析】注意字的高低八位,和物理地址的合成。7不可屏蔽中断从8086CPU的引脚进入。答案NMI【解析】8086CPU有2种外部中断源,一个是从INTR引脚输入的可屏蔽中断源,另一个就是题中说的不可屏蔽的中断源。第二章8086/8088微处理器的指令系统本章主要介绍了微型计算机指令系统中的寻址方式,各类指令格式,应用DEBUG调试简单的应用程序,通过对常见指令的分析和学习,能熟悉利用DEBUG调试程序上机,编写程序段和运行该程序段,查看标志的变化,存储器和各寄存器的内容变化,进而理解微处理器的工作原理和工作过程。一、重点提示本章的重点是理解每种寻址方式的操作数所在的位置,不同指令使用的操作数形式的差异,对堆栈操作指令的理解以及堆栈的操作过程,能够判断一条指令的寻址方式,典型指令的实际应用。数据的寻址方式:1立即寻址操作数直接在指令中给出。例:MOVAL,502寄存器寻址指令的操作码是一个寄存器,操作数在这个寄存器中。例:ADDAX,BX,将AX中的内容和BX中的内容相加后,结果送AX。3直接寻址操作数在存储器中的地址在指令中直接给出。例:ADDAX,-I000H,将存储单元1000H中的内容和AX中的内容相加后,结果送AX。4寄存器间接寻址操作数的地址在寄存器中,其寄存器在指令中给出。例:MOVAX,SI,将寄存器SI中的内容作为访问存储器的某个单元的地址,然后取出地址中的操作数送入AX。5变址寻址是由指令提供基地址、变址寄存器提供偏移爨,此寻址方式面向用户,常用于访问字符串、向量数据结构和循环程序设计。6基址寻址是由基址寄存器提供基准地址、指令提供偏移量;此寻址方式面向系统,由逻辑地址空间到物理地址空间的变换提供支持,用以解决程序在存储器中再定位和扩大寻址空间。等问题。7基址一变址寻址操作数的地址是程序计数器PC的值加上偏移量形成的,这个偏移量在指令中给出。是一种特殊的变址寻址方式,偏移量用补码表示,可正可负。相对寻址可用较短的地址码访问内存。二、难点提示1操作码和操作数的实质2寻址方式的判断3指令的执行过程4堆栈操作的过程5指令执行结果的分析1寻址方式(1)指令格式(2)立即数寻址(3)寄存器操作数寻址(4)存储器操作数寻址:直接寻址,寄存器寻址,变址寻址,基址-变址寻址2.8088/8086指令系统(1)数据传送指令(2)算术运算指令(3)逻辑运算指令和移位指令(4)串操作指令(5)控制转移指令(6)位处理器控制指令3DEBUG调试程序的简单应用表2-1数据传送指令助记符功能通用数据传送指令MOV传送字节或字PUSH字人栈POP字出栈XCHG交换字节或字XLAT字节转换地址目标传送指令LEA装入有效地址LDS将指针变量装入寄存器及DSLES将指针变量装入寄存器及ES标志传送指令LAHF标志寄存器低字节送AHSAHFAH值送标志寄存器低字节PUSHF标志寄存器内容进栈POPF标志寄存器内容出栈I/O指令IN输入字节或字OUT输出字节或字表2-2算术运算指令助记符功能加法指令ADD加法ADC带进位的加法INC增量(加1)AAA加法的ASCII修正DAA加法的十进制修正减法指令SUB减法SBB带借位的减法、DEC减量(减1)NEG求补(变负)CMP比较AAS减法的ASCII修正DAS减法的十进制修正乘法指令MUL无符号数乘法IMUI。整数乘法AAM乘法的ASCII修正除法指令DIV无符号数除法IDIV整数除法AAD除法的ASCII修正转换CBW字节转换为字CWD字转换为双字表2-3位处理指令助记符功能逻辑运算符AND逻辑“与”0R逻辑“或”NOT逻辑“非”XOR逻辑“异或”TEST测试移位指令SHL逻辑左移SAL算术左移SHR逻辑右移SAR算术右移循环移位指令ROL循环左移ROR循环右移RCL通过CF循环左移RCR通过CF循环右移表2-4串操作指令助记符功能串操作指令MOVS(MOVSB,MOVSW)串传送(字节传送,字传送)CMPS(CMPSB,CMPSW)串比较(字节比较,字比较)STOS(STOSB,STOSW)存入串(存入字节,存入字)LODS(LODSB,LODSW)取出串(取出字节,取出字)SCAS(SCASB,SCASW)扫描串(扫描字节,扫描字)重复前缀REP重复操作REPE/REPZ等于为零重复REPNE/REPNZ不等于不为零重复表2-5程序转移指令助记符功能无条件转移指令CALL调用过程(子过程)RET从过程(子过程)返回JMP无条件转移条件转移指令JA/JNBE高于不低于等于,转移JAE/JNB高于等于不低于,转移JB/JNAE低于不高于等于,转移JBE/JNA低于等于不高于,转移JC有进位(借位),转移JE/JZ等于为零,转移JG/JNLE大于不小于等于,转移JGE/JNL大于等于不小于,转移JL/JNGE小于不大于等于,转移JLE/JNG小于等于不大于,转移JNC无进位(借位),转移JNE/JNZ不等于不为零,转移JNO不溢出,转移JNP/JPOPF为“0"/奇状态,转移JNSSF为“O”,转移J0溢出,转移JP/JPEPF为“1”偶状态,转移JSSF为“1”,转移JCXZ寄存器CX=O,转移重复控制指令LOOP循环LOOPE/LOOPZ等于为零,循环LOOPNE/LOOPNZ不等于不为零,循环中断指令INT中断INT3断点中断INTO溢出中断IRET中断返回表2-6处理器控制指令助记符功能标志位操作STC进位标志置1CLC进位标志置OCMC进位标志取反STD方向标志置1CLD方向标志置OSTI中断允许标志置1CLI中断允许标志置O外同步HLT暂停直至中断或复位WAIT等待TEST信号有效ESC交权给外部处理机LOCK在下一条指令期间封锁总线空操作NOP空操作表2-7串操作指令中寄存器和标志位的用途寄存器标志用途SI源字符串的变址值(偏移量)DI目的字符串的变址值(偏移量>DS源字符串的段基值ES目的字符串的段基值CX重复次数计数器AL/AXSCAS指令的扫描值LODS指令的目的操作数STOS指令的源操作数ZF扫描比较结束标志DFDF=OSI,DI自动增量DF=1SI,DI自动减量一、单项选择题1为了缩短指令中某个地址段的位数,有效的方法是采取()A立即寻址B变址寻址C间接寻址D寄存器寻址答案D【解析】由,于计算机中寄存器的数量一般很少,采用寄存器寻址时可用少量的代码来指定寄存器,这样可以减少对应地址段的代码位数,也可减少整个指令的代码长度。2堆栈指针SP的内容是()A栈顶单元内容B栈顶单元地址C栈底单元内容D栈底单元地址答案B【解析】堆栈是按特定顺序进行访问的存储区,其访问方式是后进先出,即先存入的数据后读出。对堆栈的访问由堆栈指针寄存器SP控制,其内容为堆栈中栈顶单元的地址,即入栈时数据保存在SP指向的单元,出栈时将SP指向单元的内容取出。3采用直接寻址方式,则操作数在()中。A主存B寄存器C直接存取存储器D光盘答案A【解析】直接寻址方式是指在指令中直接给出操作数在存储器中的地址,操作数在主存储器中,指令中的地址直接作为有效地址,对存储器进行访问即可取得操作数。4假设寄存器R中的数值为200,主存地址为200和300的地址单元中存放的内容分别是300和400,则什么方式下访问到的操作数为200()A直接寻址200B寄存器间接寻址(R)C存储器间接寻址(200)D寄存器寻址R答案D【解析】直接寻址200的操作数为300,寄存器间接寻址(R)的操作数300,存储器间接寻址(200)的操作数为400,寄存器寻址R的操作数为200。5单地址指令()A只能对单操作数进行加工处理B只能对双操作数进行加工处理C无处理双操作数的功能D既能对单操作数进行加工处理,也能在隐含约定另一操作数(或地址)时,对双操作数进行运算答案D【解析】单地址指令既能对单操作数进行加工处理,也能对双操作数进行运算。当处理双操作数时,一个操作数在指令中给出,另一个操作数则是隐含约定的,例如堆栈操作指令中的入栈指令PUSH,指令中只给出源操作数,而目的操作数则由计算机中的堆栈指针(SP)确定,在指令中不需要指定。6在大多数情况下,一条机器指令中是不直接用二进制代码来指定()A下一条指令的地址B操作的类型C操作数地址D结果存放地址答案A【解析】指令系统中可以用伪指令标识下一条将要运行的指令,这样可以使程序具有很好的可读性。7在存储器堆栈中,若栈底地址为A,SP指针初值为A-1,当堆栈采用从地址小的位置向地址大的位置生成时,弹出操作应是()A先从堆栈取出数据,然后SP指针减B先从堆栈取出数据,然后SP指针加CSP指针先加1,然后从堆栈取出数据D.SP指针先减1,然后从堆栈取出数据答案A【解析】堆栈是按特定顺序进行访问的存储区,其访问方式是后进先出,即先存入的数据后读出。对堆栈的访问由堆栈指针寄存器SP控制,当堆栈采用从地址小的位置向地址大的位置生成时,入栈操作是SP指针先加1,然后将数据存人堆栈,从堆栈取出弹出操作是先从堆栈取出数据,然后SP指针减1。8转移指令执行结束后,程序计数器PC中存放的是()A该转移指令的地址B顺序执行的下一条指令地址C转移的目标地址D任意指令地址答案C【解析】转移指令执行过程中,将转移指令所指的子程序的起始地址装入PC,因此转移指令执行结束后,程序计数器PC中存放的是转移的目标地址。二、填空题1如指令中给出形式地址为D,则间接寻址方式获得操作数的有效地址为_。答案以D为地址的存储单元的内容【解析】在存储器间接寻址方式中,操作数的地址在主存储器中,其存储器地址在指令中给出。也就是说在指令中给出的既不是操作数,也不是操作数的地址,而是操作数地址的地址,则有效地址为以形式地址D为地址的存储单元的内容。2如果说变址寻址方式主要是面向用户的,那么基址寻址一般是面向_的。答案系统【解析】变址寻址方式是面向用户的,常用于访问字符串、向量数据结构和循环程序设计;而基址寻址方式是面向系统的,对由逻辑地址空间到物理地址空间的变换提供支持,用以解决程序在存储器中再定位和扩大寻址空间等问题。3在寄存器寻址方式中,指定寄存器中存放的是_。答案操作数【解析】在寄存器间接寻址方式中,指定寄存器中存放的是操作数地址;而在寄存器寻址方式中,指定寄存器中存放着操作数。4在计算机中,各指令周期的时间长度是_的。答案不相同【解析】在计算机中,由于指令的种类不同,功能不同,执行每条指令时机器所进行的操作可能就不同,所需要的时间长短也可能不相同,所以各指令周期的时间长度不一定相同。5转移指令执行结束后,目标地址放在_中。答案程序计数器PC【解析】转移指令执行过程中,将转移指令所指的子程序的起始地址装入PC,因此转移指令执行结束后,程序计数器PC中存放的是转移的目标地址。6若要使某些数位为1,例如让10010010变为11011010,应使用_运算指令。答案逻辑或运算【解析】应选用逻辑或运算指令,并设置屏蔽字为01001000,则原操作数10010010与屏蔽字01001000进行逻辑或运算如下,结果为11011010。逻辑或运算规律:(1)某位和“1”或运算,结果一定为“1”(2)某位和“0”或运算,结果保持原来的位信息逻辑与运算规律:(3)某位和“1”与运算,结果保持原来的位信息(4)某位和“O”与运算,结果一定为“0”7操作数的地址在寄存器中,指令中给出寄存器号这种是_寻址方式。答案寄存器间接【解析】这种寻址方式的含义是:操作数的地址在寄存器中,指令中给出寄存器号。它的寻址过程:从指令中取出寄存器号,找到对应的寄存器,以该寄存器内容作为地址访问主存,读出操作数。掌握常见的寻址方式:(1)立即数寻址(2)寄存器寻址(3)直接寻址(4)寄存器间接寻址(5)变址寻址(6)基址寻址(7)基址加变址的寻址8若存储器堆栈是按向低地址生长方式生成的,那么压栈的过程是_,弹出操作的具体过程是_。答案先移动栈顶指针,后压人数据先弹出数据,后移动栈顶_指针【解析】压栈操作过程:先移动栈顶指针:(SP)一1sP;后压人数据:数据(SP)弹出操作过程:先弹出数据:(SP)寄存器;后移动栈顶指针:(SP)+1-+SP堆栈的总操作原则:先进后出人栈:先SP=SP-l,然后信息入栈出栈:先从堆栈中取出信息,然后S=SP+19堆栈有_和_两种基本操作。答案入栈出栈【解析】堆栈的两种基本操作是入栈和出栈。入栈操作过程:先移动栈顶指针:(SP)一1SP;后压人数据:数据(SP)出栈操作过程:先弹出数据:(SP)寄存器;后动栈顶指针:(SP)+1SP三、程序分析题假设寄存器R中的数值为2000,主存地址为2000和3000的地址单元中存放的内容分别为3000和4000,PC的值为5000,若按以下寻址方式,访问到的操作数各是多少?寄存器寻址R;寄存器间接寻址(R);直接寻址2000;存储器间接寻址(2000);相对寻址-3000(PC)。答案寄存器寻址R,操作数是2000;寄存器间接寻址(R),操作数是3000;直接寻址2000,操作数是3000;存储器间接寻址(2000),操作数是4000;相对寻址-3000(PC),操作数是2000。【解析】本题主要考察对寻址方式含义的理解。寻址方式实质就是微处理器访问数据的方法。第三章汇编语言程序设计本章主要介绍了微型计算机8086的汇编语言程序设计基本方法,通过本章的学习,要求考生能掌握8086汇编语言的格式和各种伪操作的含义和用法,在此基础上,能读懂用汇编语言编写的程序,编写简单的汇编语言源程序,并有上机调试和运行所编程序的能力,要求能够初步掌握汇编语言程序的设计方法。一、重点提示1汇编语言程序的格式2伪操作3汇编语言程序设计4汇编语言程序的上机过程二、难点提示1汇编语言程序设计2汇编语言程序的上机过程1程序设计语言概述(1)机器语言(2)汇编语言(3)高级语言2汇编语言程序的格式(1)分段结构(2)名字(3)助记符和伪指令(4)操作数(5)注释(6)汇编语言程序结构3伪操作(1)段定义伪操作(2)数据定义伪操作(3)符号定义伪操作(4)过程定义伪操作(5)模块定义与连接伪操作(6)宏处理伪操作4汇编语言程序设计(1)程序设计的步骤(2)循环与分支程序设计(3)子程序设计(4)DOS和BIOS功能调用(5)常用汇编语言程序举例5汇编语言程序的上机过程(1)工作环境(2)建立汇编语言源文件(3)MASM和LINK程序的应用一、单项选择题1在堆栈寻址中,设A为累加器,SP为堆栈指示器,Msp为SP指示的栈顶单元。如果进栈操作顺序是:;那么出栈操作的顺序应是()ABCD答案A【解析】堆栈是按特定顺序进行访问的存储区,其访问方式是后进先出,即先存入的数据后读出。对堆栈的操作有入栈和出栈两种,两者的操作完全相反,包括功能和顺序均相反。2下列标号()是合法的。A.MAINBNEWITEMCINUMDRET答案A【解析】B不能有空格;C第一个字符不能为数字;D不能是保留字,如助记符;指示性语句的标号实质上是指令的符号地址,是一个可选项。二、填空题1用二进制数表示指令和数据的语言称为。答案机器语言【解析】机器语言就是用二进制数表示指令和数据的语言二特点:不直观,难手理解莉记忆;能被计算机直接理解和执行,执行速度快,占用内存少。机器语言是计算机能直接识别的语言,对其应该有一个了解和熟悉。2汇编语言语句有和两种,语句组成包括、等4部分。汇编语言的特点是。答案指令性语句指示性语句名字操作码,伪操作操作数注释特点:编写、阅读和修改都比较方便;执行速度快,占用内存少;源程序需要汇编为机器语言才能执行;不同的CPU具有不同的汇编语言,互相之间不能通用【解析】汇编语言语句有2种:指令性语句由CPU指令组成,指示性语句由伪操作组成。三、编写程序题1编写一个汇编语言程序,完成对10个字节数据a1a10求和。答案DATASEGMENTAT2000HARRAYDBal,a2,a3,al0COUNTEQU$一ARRAYSUMDW?DATAENDSSTACKSEGMENTPARASTACK'STACK'STAKDB10DUP(?)TOPEQULENGTHSTAKSTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,OMOVDI,OFFSETSUMMOVBX,OFFSETARRAYMOVCX,COUNTADDAL,BXADCAH,0INCBXLOOPLOPMOV-DI,AXMOVAH,4CHINT2lHCODEENDSENDSTART【解析】此例清楚地显示了汇编语言的两个组成特点:分段结构和语句行。(1)分段结构8086/8088的程序分段,最多可由4种段组成,并分别由段寄存器CS、DS、ES和SS的内容作为段基值,每段所占内存容量可达64KB。上例程序共有3段,它们分别是数据段(段名DATA)、堆栈段(段名STACK)和代码段(段名CODE),各段由命令SEGMENT开始,并由命令ENDS结束。(2)语句行上例程序共有26行,即共有26个语句行。汇编语言程序的语句有两类:指令性语句和指示性语句。指令性语句指令性语句是主要由指令构成的语句,其格式为:标号:操作码操作数;注释其中操作码和操作数是用助记符表示的指令的两个部分,其中操作数可以是1个、2个或几个,也可以无操作数(即缺省的)。其中带方括号的有三项:标号、操作数和注释。表示该项是任选项,即根据具体编程需要该项可有可无,当然在实际语句中该项的方括号是不写出来的。标号具有该语句指令所在内存地址的属性,通常在转移指令中用做目的地址。注意:标号必须用冒号“:”结尾,这是语法的规定。用分号“;”开始的注释用来说明该语句在程序中的作用,以方便程序的阅读和修改,这项也是任选的。如上例的第18语句行LOP:ADDAL,BX其中指令是ADDAL,-BX,标号是LOP,LOP在第21语句行指令LOOPLOP前出现,是转移的目的地址,此语句中未用注释项。指示性语句指示性语句是主要由命令(亦称伪指令)构成的语句,用来指示汇编程序进行汇编操作,其格式为:名字变量命令参数;注释其中命令指示汇编程序进行某种汇编操作,参数是有关的数据,带方括号的项是任选的。如上例的第1语句行DATASEGMENTAT2000H其中命令SEGMENT指出这是一个段的开始,参数AT2000H指定该段的段基值为2000H,而DATA则是该段的名字一段名,为一个16位的立即数,即该段的段基值,本例中即为2000H。又如上例的第5语句行DATAENDS则表明了段名为DATA的段的结束。指令性语句的应用使程序员编程时不需进行很多计算,既方便又简化了编程212作。2分析下列语句完成之后内存单元的分配情况:DATA2DB2f-DUP_(12H,34H,56H)答案此时内存分配