第一章计算机基础(P32)1-1电子管,晶体管,中小规模集成电路、大规模、超大规模集成电路。1-2把CPU和一组称为寄存器(Registers)的特殊存储器集成在一片大规模集成电路或超大规模集成电路封装之中,这个器件才被称为微处理器。以微处理器为核心,配上由大规模集成电路制作的只读存储器(ROM)、读写存储器(RAM)、输入/输出、接口电路及系统总线等所组成的计算机,称为微型计算机。微型计算机系统是微型计算机配置相应的系统软件,应用软件及外部设备等.1-3写出下列机器数的真值:(1)01101110(2)10001101(3)01011001(4)11001110答案:(1)+110(2)-13(原码)-114(反码)-115(补码)(3)+89(4)-78(原码)-49(反码)-50(补码)1-4写出下列二进制数的原码、反码和补码(设字长为8位):(1)+010111(2)+101011(3)-101000(4)-111111答案:(1)[x]原=00010111[x]反=00010111[x]补=00010111(2)[x]原=00101011[x]反=00101011[x]补=00101011(3)[x]原=10101000[x]反=11010111[x]补=11011000(4)[x]原=10111111[x]反=11000000[x]补=110000011-5当下列各二进制数分别代表原码,反码,和补码时,其等效的十进制数值为多少?(1)00001110表示原码14,反码14,表示补码为14(2)11111111表示原码-127,反码-0,表示补码为-1(3)10000000表示原码-0,反码-127,表示补码为-128(4)10000001表示原码-1,反码-126,表示补码为-1271-6已知x1=+0010100,y1=+0100001,x2=-0010100,y2=-0100001,试计算下列各式。(字长8位)(1)[x1+y1]补(2)[x1-y2]补(3)[x2-y2]补(4)[x2+y2]补(5)[x1+2*y2]补(6)[x2+y2/8]补答案:(1)[x1+y1]补=[00010100+00100001]补=[00110101]补=00110101(2)[x1-y2]补=[x1]补+[-y2]补=00010100+00100001=00110101(3)[x2-y2]补=[x2]补+[-y2]补=11101100+00100001=00001101(4)[x2+y2]补=[x2]补+[y2]补=11101100+11011111=11001011(5)[x1+2*y2]补=[x1]补+[2*y2]补=00010100+10111110=11010010(6)[x2+y2/8]补=11101100+[y2/8]补=11101100+11111100=111010001-7用补码来完成下列运算,并判断有无溢出产生(字长为8位):(1)85+60(2)-85+60(3)85-60(4)-85-60答案:(1)[x]补+[y]补=01010101+00111100=10010001=-111,有溢出(2)[x]补+[y]补=10101011+00111100=11100111=-25,无溢出(3)[x]补+[y]补=01010101+11000100=00011001=25,无溢出(4)[x]补+[y]补=10101011+11000100=01101111=111,有溢出1-8在微型计算机中存放的两个补码数,试用补码加法完成计算,并判断有无溢出产生。(1)[x]补+[y]补=01001010+01100001=10101011有溢出(2)[x]补-[y]补=01101100-01010110=01101100+10101010=00010110无溢出注:[X]补-[Y]补=[X]补+[-Y]补[-Y]补的算法:将[Y]补连同符号位一起按位取反加11-9试将下列各数转换成BCD码:(1)(30)10(2)(127)10(3)00100010B(4)74H答案:(1)(30)10=(00110000)BCD(2)(127)10=(000100100111)BCD(3)00100010B=34=(00110100)BCD(4)74H=(116)10=(000100010110)BCD1-10下列各数代表什么ASCII字符:(1)41H(2)72H(3)65H(4)20H答案:(1)41H=(01000001)2,代表字符A。(2)72H=(01110010)2,代表字符r。(3)65H=(01100101)2,代表字符e。(4)20H=(32)10=(00100000)2,代表SP。1-11写出下列字符的ASCII码:9,*,=,!,$答案:900111001*00101010=00111101!00100001$001000011-19地址总线:传递地址信息的总线数据总线:传输数据控制总线:传输控制信号,时序信号和状态信息1-20指令:人们规定计算机执行特定操作(加、减、乘、除、移位……)的命令。指令系统:计算机全部指令的集合第二章80X86/Pentium微处理器(P90)2-78086/8088有几位状态位?有几位控制位?其含义分别是什么?答:8086/8088有6位状态位,3位控制位。状态位:CF进位标志;PF奇偶标志;AF辅助进位标志;ZF零标志;SF符号标志,OF溢出标志。控制位:IF允许中断标志;DF方向标志;TF陷阱标志2-15物理地址:存储区域的某一单元地址,地址信息是20位二进制代码.CPU是以物理地址访问存储器.逻辑地址:编程时采用,由段基址和偏移量组成.8086CPU中的每个存储元在存储体中的位置都可以使用实际地址和逻辑地址来表示。同一物理地址可对应多个逻辑地址2-16段寄存器指示的存储区域的起始地址称为段基址,偏移量是在某段内指定存储单元到段基址的距离。段基址和偏移量共同组成物理地址,物理地址PA=段基地址×16+偏移量2-17A0000H-AFFFFh2-18B000H2-20已知堆栈段寄存器SS=A000H,堆栈指示器SP=0100H,试将数据1234ABCDH推入堆栈,画出进栈示意图。最后栈顶SP=?答:SP=00FCH物理地址0A00FCH---0A00FFH的内容依次为CD,AB,34,12.注:SP:堆栈栈顶指示器,16位寄存器,存放栈顶的偏移地址。2-21试求出下列运算后的各个状态标志,并说明进位标志和溢出标志的区别。(1)1278H+3469H(2)54E3H-27A0H(3)3881H+3597H(4)01E3H-01E3H解:(1)0001001001111000+00110100011010010100011011100001CF=0PF=1AF=1ZF=0SF=0OF=0(2)0101010011100011+110110000110000010010110101000011CF=0PF=0AF=0ZF=0SF=0OF=0(3)0011100010000001+00110101100101110110111000011000CF=0PF=1AF=0ZF=0SF=0OF=0(4)0000000111100011+111111100001110110000000000000000CF=0PF=1AF=0ZF=1SF=0OF=0注:16位操作数的最低二进制位:b0、最高二进制位:b15AF:看b3是否向b4有进(借)位:辅助进借位对减法运算,若采用补码的加法进行,则CF取反。第三章80X86/Pentium指令系统(P135)3-4(1)7237H(2)D5B4H(3)637DH寻址方式:(1)MOVSI,2100H(2)MOVCX,DISP[BX](3)MOV[SI],AX(4)ADCAX,[BX][SI](5)ANDAX,DX(6)MOVAX,[BX+10H](7)MOVAX,ES:[BX](8)MOVAX,[BX+SI+20H](9)MOV[BP],CX(10)PUSHDS地址表达式:标号/变量/常量+基址寄存器+变址寄存器[地址表达式]:存储器操作数,以地址表达式的值为偏移地址3-7(4)(10)(14)正确。(1)AX=3355H,SP=1FFFEH(2)AX=3355H,DX=4466H,SP=1FFFEH3-12(1)CL=0F6H(2)CX=5678h(3)BX=0056H,AX=1E40H(4)SI=00F6H,[SI]=0024H(5)AX=5678H,[09226H]=1234H3-14(1)MOVAX,0XORAX,AXSUBAX,AX(2)MOVCL,4RORBL,CL(3)MOVAX,N1MOVBX,N1CWD;对被除数进行符号扩展IDIVBXMOVM1,AX;商放在AX中MOVM2,DX;余数放在DX中(4)ANDBX,0F7AFH或OR0850H(5)XORAX4020H(6)TESTDX,0201H(7)ORCX,13-17NUM1DW4148H,2816HNUM2DW2258H,8452H(1)MOVAX,NUM2ADDNUM1,AXMOVAX,NUM2+2ADDNUM1+2,AX(2)RESDB2DUP(?)MOVAL,BYTEPTRNUM1ADDAL,BYTEPTRNUM1+1ADDAL,BYTEPTRNUM1+2ADDAL,BYTEPTRNUM1+3MOVRES,AL(3)假设存放的数据为无符号数MOVSI,OFFSETNUM1XORAX,AXMOVCX,8LP:ADDAL,[SI]ADCAH,0INCSILOOPLPMOVRES,ALMOVRES+1,AH假设存放的数据为带符号数MOVSI,OFFSETNUM1XORBX,BXMOVCX,8LP:MOVAL,[SI]CBWADDBX,AXINCSILOOPLPMOVRES,ALMOVRES+1,AH(4)MOVAX,NUM1ADDNUM2,AXMOVAX,NUM1+2ADCNUM2+2,AX3-18(1)XORAX,AX;AX清零LEASI,NUM1MOVCX,8LOP:ADDAL,[SI]DAAADCAH,0;AF清零INCSILOOPLOPMOVRES,ALMOVRES+1,AHMOVAL,NUM1SUBAL,NUM2DASMOVRES,AL差=90H;CF=13-21(1)BX=9AH(2)BX=61H(3)BX=8071H(4)BX=10F7H(5)BX=0FF1CH3-223-23(1)将自FIRST开始的存储区中的连续10个字节传送到从SECOND开始的存储区中。(2)将自0404H开始的存储区中连续256个字节全部赋0值。3-26MOVBX,0A80HMOVAL,5XLAT3-27(1)IP=1256H(2)IP=3280H(3)IP=2450H3-28CS=2000H;IP=009AH;SP=0F178H;[SP]=8FH[SP+1]=3DH;[SP+2]=50H;[SP+3]=40H;3-29MOVBL,ALCMPAL,01HJZLAB1CMPAL,02HJZLAB2CMPAL,04HJZLAB3ANDBL,07HJNZOK……OK:……LAB1:……LAB2:……LAB3:……3-31MOVAX,0032HCMPAX,XJLN_HIGHMOVBX,XSUBBX,YJOOVERFLOWJNSNEXTNEGBXNEXT:MOVRESULT,BXN_HIGH:……OVERFLOW:……第四章汇编语言程序设计(P195)4-2内存分配和预置数据VAR1DB12,-12H,3DUP(0,0FFH)VAR2DB100DUP(0,2DUP(1,2),0,3)VAR3DB‘WELCOMETO’VAR4DWVAR3+6;取其偏移量给VAR4VAR5DDVAR3;取其偏移量和段基址给VAR54-3(1)DATA1DB86H,27H,23H,00H,24H,1A