首页 微型计算机技术 陈慈发 微机原理 习题 详解

微型计算机技术 陈慈发 微机原理 习题 详解

举报
开通vip

微型计算机技术 陈慈发 微机原理 习题 详解第一章微型计算机概论1.12以下十进制数对于的八位二进制补码是怎样表示的?(1)102[102]补=01100110B(2)34[34]补=00100010B(3)96[96]补=01100000B(4)-100[-100]原=11100100B[-100]反=10011011B[-100]补=10011100B(5)-64[-64]原=11000000B[-64]反=10111111B[-64]补=11000000B(6)0[0]补=00000000B1.14为什么我们会用16进制表示数据?请将下列十进制数转换成...

微型计算机技术 陈慈发 微机原理 习题 详解
第一章微型计算机概论1.12以下十进制数对于的八位二进制补码是怎样 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示的?(1)102[102]补=01100110B(2)34[34]补=00100010B(3)96[96]补=01100000B(4)-100[-100]原=11100100B[-100]反=10011011B[-100]补=10011100B(5)-64[-64]原=11000000B[-64]反=10111111B[-64]补=11000000B(6)0[0]补=00000000B1.14为什么我们会用16进制表示数据?请将下列十进制数转换成对应的十六进制数。(1)354=162H(2)102=66H(3)64=40H(4)256=100H(5)127=7FH(6)32=20H(7)135=87H(8)67=43H1.15现有如下十进制数,将其转换成对应的二进制数。(1)34.5=10010.1B(2)20.125=10100.001B(3)17.12=10001.0001B(4)100.4=1100100.01B(5)50.05=110010.00001B(6)19.3=10011.01B1.16将下列十六进制数表示成二进制数。(1)0FFH=11111111B(2)34H=00110100B(3)67H=01100111B(4)4EH=01001110B(5)90H=10010000B(6)4DH=01001101B(7)5AH=01011010B1.17请写出以下补码表示的二进制数真值。[X]补=1000000000000000BX=-32768[Y]补=1111111111111111B[Y]反=1111111111111110B[Y]原=1000000000000001BY=-1[Z]补=0111111111111111BZ=32767[W]补=1111000000000000B[W]反=1110111111111111B[W]原=1001000000000000BW=-4096[Q]补=0100000000000000BQ=16384[P]补=1000000000000001B[P]反=1000000000000000B[P]原=1111111111111111BP=-327671.20请判断以下八位二进制数补码运算是否会产生溢出,或者产生进位,为什么?(1)-23+78[-23]补+[78]补=E9H+4EH=(1)37H无溢出,有进位(2)-45-92[-45]补+[-92]补=D3H+A4H=(1)77H有溢出,有进位(3)89+30[89]补+[30]补=59H+1EH=77H无溢出,无进位(4)78-52[78]补+[-52]补=4EH+CCH=(1)1AH无溢出,有进位(5)83-(-30)[83]补+[30]补=53H+1EH=71H无溢出,无进位(6)126-(-34)[126]补+[34]补=7EH+22H=A0H有溢出,无进位(7)108+34[108]补+[34]补=6CH+22H=8EH有溢出,无进位1.22设有X=80H,Y=79H,Z=88H,在下述情况下比较三个数的大小。(1)三数均为无符号数Y 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 与3000H之和所对应的字节送至DH有效地址EA=BP+3000H=8000H物理地址PA=SS*16+EA=20000H+8000H=28000H执行结果:(28000H)→DH(4)MOVES:[SI+1210H],AX变址寻址;AX内容送入数据段中偏移地址SI与1210H之和所对应的字中有效地址EA=SI+1210H=6000H+1210H=7210H物理地址PA=ES*16+EA=3000H*16+7210H=37210H执行结果:AL→(37210H),AH→(37211H)(5)MOV[BX+DI+50H],AX基址变址寻址;AX内容送入数据段中偏移地址为BX内容与DI内容及50H内容之和所对应的字节中有效地址EA=BX+DI+50H=4000H+70000H+50H=74050H物理地址PA=DS*16+EA=1000H*16+74050H=84050H执行结果:AL→(84050H)(6)INCWORDPTR[BX+SI]基址变址寻址;堆栈中偏移地址为BX内容与SI内容所对应的字加1有效地址EA=BX+SI=4000H+6000H=A000H物理地址PA=DS*16+EA=1000H*16+A000H=1A000H执行结果:1A000H中存放的字的值加13.10分别说明指令MOVAX,2000H和指令MOVAX,[2000H]以及指令MOVAX,BX和指令MOVAX,[BX]的区别。解:MOVAX,2000H将立即数2000H送入寄存器AXMOVAX,[2000H]将数据段中偏移地址为2000H的数据送入AX;MOVAX,BX将寄存器BX操作数传入AXMOVAX,[BX]将数据段中偏移地址为BX的内容所对应的字送入AX3.11指出下列指令中源操作数的寻址方式。(1)MOVBL,0F9H(2)ADD[BX],SI(3)SUBCL,[4000H](4)CMPDX,[SI](5)ANDAL,[BX+1](6)ORBP,[DI+2100H](7)XORAX,[BP+SI](8)MOVCX,300解:(1)MOVBL,0F9H立即寻址(2)ADD[BX],SI寄存器寻址寻址(3)SUBCL,[4000H]直接寻址(4)CMPDX,[SI]寄存器间接寻址(5)ANDAL,[BX+1]基址寻址(6)ORBP,[DI+2100H]变址寻址(7)XORAX,[BP+SI]基址变址寻址(8)MOVCX,300立即寻址3.12下列指令都是非法的,指出各指令错在哪里?(1)MOVSI,AH(2)MOV70H,BL(3)MOVCX,F123H(4)MOV[BX],6AH(5)MOVES,5000H(6)MOV[DI],[3000H](7)MOVDS,SS(8)MOVCS,AX(9)MOVAL,[CX](10)MOV[BX+BP],DX(11)MOVBH,[SI+DI+2](12)PUSHAL(13)LEAAX,BX(14)LDSBL,[5100H](15)INAH,DX(16)OUT288H,AL(17)ADD[2400H],1234H(18)XOR[2500R],[BX+10H](19)INC[SI](20)MUL10(21)IDIV[BP+DI+1300H](22)SALAL,2解:(1)MOVSI,AH两个操作数字长不一致(2)MOV70H,BL立即数不能做目的操作数(3)MOVCX,F123H十六进制的数以字母打头时前必须补0(4)MOV[BX],6AH两个操作数的字长不确定(5)MOVES,5000H立即数不能直接送段寄存器(6)MOV[DI],[3000H]两个操作数不能存储器操作数(7)MOVDS,SS段寄存器不可相互传送数据(8)MOVCS,AXCS不能做目的操作数(9)MOVAL,[CX]CX不能用作寄存器间接寻址(10)MOV[BX+BP],DX存储器寻址方式中表示有效地址不能同时为两个基址寄存器(11)MOVBH,[SI+DI+2]存储器寻址方式中表示有效地址不能同时为两个变址寄存器(12)PUSHAL入栈出栈操作必须以字为单位,AL应为AX(13)LEAAX,BXLEA指令中源操作数必须为存储器寻址方式应为[BX](14)LDSBL,[5100H]LDS指令中目的操作数必须为16位的通用寄存器(15)INAH,DXIN指令中的目的操作数只能是AL或AX(16)OUT288H,AL输入输出指令中端口地址应为16位,必须先送给DX;应为MOVDX,288HOUTDX,AL(17)ADD[2400H],1234H两个操作数的字长不确定(18)XOR[2500R],[BX+10H]两个操作数不能同时为内存操作数(19)INC[SI]操作数的字长不确定(20)MUL10MUL指令的操作数不能为立即数(21)IDIV[BP+DI+1300H]操作数的字长不确定(22)SALAL,2移位次数大于1时必须先送给CL3.13将寄存器AH、BH、CH和数据段中偏移地址为2100H,2101H,2102H的3个字节单元内容都置数A0H,最后将寄存器DL的内容与偏移地址为2103H的字节单元内容互换。试编写程序。解:DEBUG-AMOVAH,0A0MOVBH,0A0MOVCH,0A0MOV[2100H],AHMOV[2101H],BHMOV[2102H],CHXCHGDL,[2103]3.14设SP=2000H,AX=3000H,BX=5000H,执行以下3条指令后,问SP=?AX=?BX=?PUSHAXPUSHBXPOPAX解:指令执行的结果应为SP=2000H-2H-2H+2H=1FFEHAX=5000H,BX=5000H3.15说明指令LEASI,[BX]与指令MOVSI,[BX]的区别。解:LEASI,[BX]是地址传送指令,将BX的有效地址取至16位SI寄存器中。这里取的是操作数的地址。MOVSI,[BX]是寄存器间接寻址,数据段中偏移地址为BX内容所对应的字送SI中。取的是操作数。3.16下列程序执行完后,AX=?BX=?CX=?MOVAX,1122HMOVBX,3344HPUSHAXPOPCXXCHGBX,CXLEACX,[BX]解:AX=1122HBX=1122HCX=1122H3.17CPU分别执行下列各段程序后,写出各个执行结果的状态标志位OF,SF,ZF,AF,PF,CF的值。(1)MOVAL,7AHADDAL,53H(2)MOVBL,0AFHADDBL,OEAH(3)MOVCL,0FFHADDCL,01H(4)MOVDL,49HSUBDL,0CAH解:(1)MOVAL,7AHADDAL,53H74H+53H=01110100+01010011=11000111BOF=1,SF=1,ZF=0,AF=0,PF=0,CF=0(2)MOVBL,0AFHADDBL,OEAHAFH+EAH=10101111+11101010=10011001BOF=0,SF=1,ZF=0,AF=1,PF=1,CF=1(3)MOVCL,0FFHADDCL,01HFFH+01H=11111111+00000001=00000000BOF=0,SF=0,ZF=1,AF=1,PF=1,CF=1(4)MOVDL,49HSUBDL,0CAH49H-CAH=01001001-11001010=01111111BOF=0,SF=0,ZF=0,AF=1,PF=1,CF=13.18有两个32位的二进制数,分别存放在两个16为寄存器CX:DX和两个16位寄存器SI:DI中,求两数之和,并将和放在两个16位寄存器AXBX中,即AX:BXCX:DX+SI:DI。试编写程序。解:设两个32位数分别为1234567823456789DEBUG-AMOVCX=1234MOVDX=5678MOVDI=6789MOVSI=2345ADDDX,DIADCCX,SIMOVBX,DXMOVAX,CX3.21分别说明下面两条乘法指令中被乘数、乘数、积所在的位置。(1)MULBL(2)IMULBX解:(1)被乘数在AL中,乘数在指令中给出的8位操作数BL中,乘积在AX中。(2)被乘数在AX中,乘数在指令中给出的16位操作数BX中,乘积在AX中。3.22若AL=86H,BL=22H,分别执行指令MUL和IMUL后,其结果是多少?OF=?CF=?解:AL=86H执行MUL指令后OF=1、CF=1执行IMUL指令后OF=1、CF=1BL=22H执行MUL指令后OF=1、CF=1执行IMUL指令后OF=0、CF=03.23分别说明下面两条除法指令中被除数、除数、商、余数所在的位置。(1)DIVCX(2)IDIVCL解:(1)AX内容除以16位操作数CX结果的商放入AX余数放入DX中。(2)AX内容除以8位操作数CL结果的商放入AL余数放入AH中。3.24分别写出CPU执行下面两程序后,寄存器DX=?AX=?(1)MOVAL,7FHCBWCWD(2)MOVAL,80HCBWCWD解:(1)DX=0000AX=007F(2)DX=0000AX=FF803.25分别写出CPU执行下面两段程序后,寄存器AL=?标志CF=?(1)MOVAL,36HADDAL,58HDAA(2)MOVAL,49HADDAL,87HDAA解:(1)36H+58H=8EH,由于低4位大于9,需要修正,AL=8EH+6H=94H寄存器AL=94H标志寄存器CF=0(2)49H+87H=D0H,AF=1,由于高4位大于9,需要修正,AL=D0H+66H=36H,CF=13.26设AX和CX中存放着两个4位的压缩型BCD码,求两数之和,并将和放在AX中。试编写程序。解:ADDAL,BLDAAMOVCL,ALMOVAL,AHADCAL,BHDAAMOVAH,ALMOVAL,CL3.27分别写出CPU执行下面两段程序后,寄存器AX=?标志CF=?(1)MOVAX,0138HADDAL,35HAAA(2)MOVAX,0533HADDAL,34HAAA解:(1)AX=0230H,CF=1(2)AX=0507H,CF=03.28下列程序执行完后,AX=?CF=?MOVAX,3649HADDAL,AHDAACBWINCAHADCAL,17HAAA解:AX=0102H,CF=13.29有如下程序段MOVAL,45HADDAL,71HDAAMOVBL,ALADCAL,19HDAAMOVBH,AL问,执行完此程序后,BX=3616,标志位PF=1,CF=0.3.30分别只使用一条指令实现下述各功能。(1)使AL的低四位清0,高四位不变;(2)使DI的高10位清0,低6位不变;(3)使BL的低4位置1,高四位不变;(4)使SI的高2位置1,低14位不变;(5)使CL中的D2、D3、D4、D5、D6位取反,D0、D1、D7位不变;(6)使BP的高4位取反,低12位不变。解:(1)ANDAL,0F0H(2)ANDDI,003FH(3)ORBL,0FH(4)ORSI,0C000H(5)XORCL,7CH(6)XORBP,0F000H3.31编写程序实现:使寄存器SI的高5位置1,低5位清0,中间6位取反。解:ORSI,0F800HANDSI,0FFE0HXORSI,07E0H3.32写出用一条指令使AX清0的一些指令。解:MOVAX,0XORAX,AXSUBAX,AXANDAX,03.34用最少的指令实现下述功能。(1)使AL的低4位移到高4位,低4位清0;(2)使AH的高4位移到低4位,高4位清0.解:(1)MOVCL,4SHLAL,CL(2)MOVCL,4SHRAL,CL3.35用移位指令实现如下功能。(1)将CL中的无符号数乘2;(2)将BX中的带符号数除以4;(3)将DX中的无符号数除以8.解:(1)SARCL,1(2)MOVCL,2SARBX,CL(3)MOVCL,4SHRDX,43.37编程实现如下功能。(1)将AL的低6位移到高6位,高2位移到低2位;(2)将BL的高6位移到低6位,低2位移到高2位;(3)将BH的高4位与低4位变换;(4)将BP的高8位与低8位变换。解:(1)MOVCL,2ROLAL,CL(2)MOVCL,2RORBL,CL(3)MOVCL,4RORBH,CL(4)MOVCL,8RORBP,CL3.39设AX=1234H,CX=9602H,下列程序执行完后,AL=?ANDAL,AHSHLAL,CLORAL,CHSARAL,XLXORAL,CLRCLAL,解:ANDAL,AHAL=10HSHLAL,CLCL=40HORAL,CHAL=0D6HSARAL,XLAL=0F5HXORAL,CLAL=0F7HRCLAL,AL=0EE最后结果:AL=0EEH3.52比较AX和BX中两个无符号数的大小,若AX>BX,则将SI中的高8位和低8位交换;若AX=BX,则将SI中的高7位置1;若AX[SI],则用[SI]取代ALNEXT:LOOPCYCLEMOVDS:[3300H],AL;编译器会认为[3300H]就是3300H,故在前面加DS:MOVAH,4CHINT21HCODEENDSENDSTART3.58编写将内存以ES:1000H开始的256个字节单元清零的程序。CODESEGMENTASSUMECS:CODESTART:MOVSI,1000HMOVCX,256CYCLE:MOV[SI],BYTEPTR0INCSILOOPCYCLEMOVAH,4CHINT21HCODEENDSENDSTART用串操作指令实现:CODESEGMENTASSUMECS:CODESTART:MOVDI,1000H;给目的串首地址赋初值MOVAL,0;用0来初始化MOVCX,256;循环256次CLD;地址从小到大变化REPSTOSB;用AL中的值对指定的目的串初始化MOVAH,4CHINT21HCODEENDSENDSTART3.59试编写程序,统计以DS:8000H为起始地址的连续200个字节单元中的0的个数。CODESEGMENTASSUMECS:CODESTART:MOVAX,0;用AX统计0的个数MOVCX,200;循环200次MOVSI,8000H;通过SI间接访问内存DS:8000H开始的存储单元CYCLE:CMPBYTEPTR[SI],0JNZNEXTINCAXNEXT:INCSILOOPCYCLEMOVAH,4CHINT21HCODEENDSENDSTART第四章汇编4.5程序中数据定义如下:DATA1DW?DATA2DB32DUP(?)DATA3DD?DLENGTHEQU$-DATA1试问DLENGTH的值是多少?DLENGTH=384.6在某程序中需要为一个变量BUF预留500个字节的存储空间,请写出相应的指令,如果要预留500个字的存储空间呢?BUFDB500DUP(?)BUFDW500DUP(?)4.7程序中数据定义如下:BUFFERBDB‘ABCDEF’RESULTDB?BUFFERWDW30DUP(?)写出以下指令的执行结果:MOVAX,TYPERESULT;AX=1MOVBX,TYPEBUFFERW;BX=2MOVCX,LENGTHBUFFERB;CX=1MOVDX,LENGTHBUFFERW;DX=30MOVAX,SIZERESULT;AX=1MOVBX,SIZEBUFFERW;BX=604.11设BX=1103H,则执行下列指令后AX和CX各为多少?若BX=03H,则结果又如何?MOVAX,BXAND0FFHMOVCX,BXEQ1103HBX=1103HAX=0003H,CX=0FFFFHBX=03HAX=0003H,CX=04.13两个ASCII码数串定义如下:STR1DB‘352678’STR2DB‘123400’编写程序段,计算STR1+STR2,要求结果仍然是ASCII码串。DATASEGMENTSTR1DB'352678'STR2DB'123400'STRDB6DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,STR1+5;SI指向STR1的最后一个元素LEADI,STR2+5;DI指向STR2的最后一个元素LEABX,STR+5;BX指向STR的最后一个元素MOVCX,6;循环6次CLC;初始认为最低位没有进位CYCLE:MOVAL,[SI]MOVAH,[DI]ADCAL,AH;将对应的两个ASCII码相加AAA;修正,仅仅取运算结果的低4位RCRDX,1;保护进位标志ORAL,30H;将所有的数值转换为对应的ASCII码SHLDX,1;恢复进位标志MOV[BX],AL;将所求的ASCII码送给STR的相应元素DECSI;SI指向前一个数DECDIDECBXLOOPCYCLEMOVAH,4CHINT21HCODEENDSENDSTART4.14下面程序段是实现从键盘输入10个一位十进制数累加。最后累加和以非压缩BCD码形式存放在AH(高位)和AL(低位)中。试把程序段中所空缺的指令填上。XORBX,BXMOVCX,10LOP:MOVAH,01H;键盘字符输入INT21HSUBAL,30HMOVDL,ALMOVAX,BXADDAL,DLAAAMOVBX,AXLOOPLOP4.18将内存中某数据块的正数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区中,并在屏幕上显示正数和负数的个数。DATASEGMENTBUFDB12,15,-2,3,-7,-8,19,-25N=$-BUFBUF1DBNDUP(?);存放正数BUF2DBNDUP(?);存放负数DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEABX,BUF;BX指向BUFLEASI,BUF1;SI指向存放正数的缓冲区BUF1LEADI,BUF2;DI指向存放负数的缓冲区BUF2MOVCX,N;循环N次MOVDX,0;DH表示负数的个数,DL表示正数的个数,都清零CYCLE:MOVAL,[BX];将BX指向的数送给ALCMPAL,0;比较AL与0的大小JGGREAT;AL>0,则转移至GREATMOV[DI],AL;AL<=0,将AL存入负数的数组INCDH;负数的个数加1INCDI;DI指向下一个负数JMPNEXTGREAT:MOV[SI],AL;AL>0,将AL存入正数的数组INCDL;正数的个数加1INCSI;SI指向下一个负数NEXT:INCBX;判断下一个数LOOPCYCLEADDDL,30H;将正数的个数变成字符输出MOVAH,2INT21HADDDH,30H;将负数的个数变成字符输出MOVDL,DHMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART第五章存储器5.2用下列芯片构成存储系统,各需要多少个RAM芯片?需要多少位地址作为片外地址译码?设系统为20位地址线,采用全译码方式。(1)512×4bRAM构成16KB的存储系统。芯片的数目:(16K/512)*(8/4)=64片片内寻址:512=29,需要9根地址线故:需要11位地址作为片外地址译码。(2)2K×4bRAM构成64KB的存储系统。芯片的数目:(64K/2K)*(8/4)=64片片内寻址:2K=211,需要11根地址线故:需要9位地址作为片外地址译码。(3)1024×1bRAM构成128KB的存储系统。芯片的数目:(128K/1024)*(8/1)=1024片片内寻址:1024=210,需要10根地址线故:需要10位地址作为片外地址译码。(4)64K×1bRAM构成256KB的存储系统。芯片的数目:(256K/64K)*(8/1)=32片片内寻址:64K=216,需要16根地址线故:需要4位地址作为片外地址译码。5.5有一2732EPROM芯片的译码电路如习图5.1所示,请计算该芯片的地址范围及存储容量。习图5.1解:存储容量:片内地址为A0~A10,对应容量211=2KB。地址范围:Y4:A19A18A17A16A15A14A13A12A11A10~A01111111000~0FE000H1111111001~1FE7FFHY5:A19A18A17A16A15A14A13A12A11A10~A01111111010~0FE800H1111111011~1FEFFFH由于译码器的输出Y4Y5对应同一片选,故同一物理内存其地址是重叠的。地址范围:FE000H~FEFFFH为4KB5.7某存储器子系统如习图5.2所示,它们的存储容量各是多少?RAM和EPROM存储器地址分配范围各是多少?习图5.2解:RAM芯片:存储容量:211=2KBY1:A19A18A17A16A15A14A13A12A11A10~A01111100100~0F9000H1111100101~1F97FFH1111100110~0F9800H1111100111~1F9FFFH故地址范围为:F9000H~F9FFFH,为4KB。ROM芯片:存储容量:212=4KBY5:A19A18A17A16A15A14A13A12A11A10~A01111110100~0FD000H1111110111~1FDFFFH故地址范围为:FD000H~FDFFFH,为4KB。
本文档为【微型计算机技术 陈慈发 微机原理 习题 详解】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
旋律
几年的财务工作经验,现认财务主管一职!精通各种财务管理软件
格式:doc
大小:221KB
软件:Word
页数:0
分类:
上传时间:2018-05-20
浏览量:7