1习题一1.1试分别将下列二进制数真值用补码表示(8位二进制数)。(1)+01101011(2)-01011100(3)-00111111(4)+011110111.2.试分别将下列补码表示的二进制数转换为相应的十进制数真值。(1)11111110(2)01100011(3)10001100(4)110001001.3.试完成下列数制间的转换。(1)十进制数转换为8位二进制数34,28,100,127,89,57(2)无符号二进制数转换为十进制数01011101,11100111,00101110,10101100,00011100,11010101(3)十进制数转换为十六进制数79,300,48,19,133,243(4)八进制数转换为十六进制数234,112,23,76,36,2221.4.试分别完成下列补码表示的二进制数运算,并将结果转换为十进制数真值。(1)01101100+10001110(2)11100110-10101100(3)01110100-00011101(4)10001110-00110011(5)11111111-01111111(6)10000000+011100111.5.试分别完成下列各十六进制数的加减运算,结果用十六进制数表示。(1)3E40+AB54(2)1000+F300(3)8799-6DE4(4)DE4C-A0E41.6.设有二进制数10111000,若将该数分别看作是无符号数、原码表示的带符号数和补码表示的带符号数,它对应的十进制数真值分别是多少?1.7.要表示无符号十进制数1000、10000和100000,至少分别需要多少位二进制数?1.8.由键盘输入的字符一般以其ASCII码形式来表示。当从键盘输入十六进制数的16个数符(0~9和A~F)时,如何将它们转换为对应的四位二进制数0000~1111?习题二2.1如何理解微处理器、微型计算机和微型计算机系统三个概念?2.2试说明Intel8086/8088CPU采用了什么结构使得其与8位及8位以下CPU相比具有更高的指令执行效率?2.3Intel8086/8088CPU包含哪几个组成部分?它们各自的功能是什么?2.4Intel8086/8088CPU中有哪些寄存器?它们的用途是什么?2.5Intel8086/8088CPU中标志寄存器各位都有什么含义?2.6Intel8086/8088CPU中的寄存器都是16位的,那么它是怎么实现对20位物理地址寻址的?2.7在IBMPC微型计算机上,分别进行以下8位二进制数的运算后,标志寄存器中OF、ZF、SF、CF的值分别为多少?(1)10101011+01010101(2)11011010+11101101(3)01010101-001111102(4)10110011-011000102.8有两个字数据12H和AB12H分别存放在存储器的10016H和8BA00H中,请图示它们在存储器中的存放情况。2.9在8086/8088中,某存储单元的逻辑地址如下,请算出它们的物理地址是多少?(1)4514H:017BH(2)F000H:0100H(3)2350H:1ABCH(4)10E0H:2020H2.10数据段中某个存储单元在(DS)=095FH时,物理地址是11820H,那么当DS=0F5FH时,物理地址为多少?2.11已知一条指令执行前,(CS)=03FAH,(IP)=45A0H,该指令的第1字节的物理地址是多少?2.12如图2.19所示,试写出地址为20021H、20024H、20026H字节单元的内容,以及地址为20022H、20024H、20026H的字单元内容。56H78HBCHDEH06H20020H20021H20022H20023H20028H20024H20025H20026H20027HFGH03H::08H::图2.19习题2.10图示2.13如图2.20所示,地址20000H为数据段的段基址,那么逻辑地址为2000H:0020H的存储单元的物理地址是多少?该地址的字内容是多少?::56H78H20000H20020H20021H::::图2.20习题2.11图示2.14IBMPC微型计算机中某一个存储单元的物理地址是12345H,试计算下列不同的逻辑地址表示:(1)1234H:________H(2)_______H:0345H2.15设堆栈寄存器(SS)=3E4BH,程序中设置堆栈长度为200个字节,试计算出堆3栈底部字单元物理地址、堆栈指针SP初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。2.16设(AX)=1122H,(BX)=3344H,(CX)=5566H,(SP)=2000H,试分析以下程序执行后AX、BX、CX、SP中的内容分别为多少?并画出堆栈变化的示意图。:PUSHAXPUSHBXPUSHCXPOPAXPOPCX:2.17设(SP)=0040H,如果用入栈指令存入5个数据,则SP为多少?若又用出栈指令取出2个数据,则SP为多少?习题三3.1写出下列指令源操作数的寻址方式,并说明该操作数在哪个段?(1)MOVAX,68H(2)MOVAH,BL(3)MOVAX,[BX](4)MOVAX,[SI](5)MOVAX,[5000H](6)MOVAL,BLOCK(7)MOVBX,[BP+5](8)MOVAX,CS:[1000H](9)MOVDS,AX(10)MOVBL,BUF[SI](11)MOVAX,BUF[BX][SI](12)MOVAX,[BP–10][DI](13)MOVAX,SS:[BX–100][SI](14)MOVAX,AREY[BP][SI]3.2假设(DS)=3000H,(ES)=4100H,(SS)=2000H,(SI)=00A0H,(DI)=2H,(BX)=100H,(BP)=10H,(BUF)=2000H。试指出下列各指令中源操作数的寻址方式,若为存储器操作数,请计算其物理地址。(1)MOVAL,[0ABCH](2)MOVAX,SI(3)MOVAX,BUF(4)MOVAX,BUF[BX](5)MOVAX,[BX](6)MOVAX,[SI](7)MOVAL,[BP](8)MOVAX,BUF[BP][SI](9)MOVAX,[BX–40H]4(10)MOVAX,40H[SI](11)MOVAX,[BX–40H][BX](12)MOVAX,[BP+100H][SI](13)MOVAX,BUF[DI](14)MOVAX,ES:BUF[BX][DI]3.3已知(SS)=0915H,(DS)=0930H,(SI)=0A0H,(DI)=1C0H,(BX)=80H,(BP)=470H。现有一条指令“MOVAX,SRC”,若源操作数的物理地址为095C0H,试用四种不同的寻址方式改写此指令(要求上述每个已知条件至少要使用一次)。3.4指出下列指令是否合法。(1)MOVAX,DL(2)MOV[BX],5(3)ADDAX,5(4)MOVDS,1000H(5)PUSHCH(6)POPCS(7)ADDES,AX(8)MOVSS,CS(9)ADD[BP],DA_BYTE(10)INC[BX](11)XCHGAX,1234H(12)CMPAL,1919H(13)SAR[BX][DI],1(14)RCLDX,2(15)MOVCS,AX(16)SUB5678H,BX(17)NOTAX,CL(18)MOVAX,[BX][BP](19)ANDAX,10H[SI][DI](20)LEADS,318H[SI]3.5已知(DS)=091DH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。下列各指令或程序段分别执行后的结果如何?(1)MOVCL,20H[BX][SI](2)MOV[BP][DI],CX(3)LEABX,20H[BX][SI]MOVAX,2[BX](4)LDSSI,[BX][DI]MOV[SI],BX(5)XCHGCX,32H[BX]XCHG20H[BX][SI],AX3.6如果TABLE为数据段中0032单元的符号地址,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么?MOVAX,TABLELEAAX,TABLE53.7假设(CX)=0FFFFH,那么下面指令单独执行后标志寄存器的CF、AF、ZF、SF和OF分别是什么?(如无影响用“×”表示)(1)SUBCX,0FFFFH(2)MOVCX,BX(3)INCCX3.8读程序题。(1)已知(DS)=1234H,(SI)=124H,(12464H)=30ABH,(12484H)=464H。LEASI,[SI]MOVAX,[SI]MOV[SI+22H],1200HLDSSI,[SI+20H]ADDAX,SI上述程序段执行后:(DS)=________,(SI)=________,(AX)=________。(2)已知(BX)=6035H,(CX)=0F0FH。ORBH,CHANDBL,CLNEGBLNOTBH上述程序段执行后:(BH)=________,(BL)=________。(3)已知(AX)=0FF60H,CF=1。MOVDX,96XORDH,0FFHSBBAX,DX上述程序段执行后:(AX)=________,CF=________。(4)已知(AX)=0A65CH,(CX)=0F002H。ROLAX,CLORAH,CHRCRAX,CL上述程序段执行后:(AX)=________,CF=________。(5)已知(AX)=0FFAAH,CF=1。MOVCX,0ABHORCX,0FF00HSUBAX,CX上述程序段执行后:(AX)=________,CF=________。3.9试根据以下要求写出相应的汇编语言指令或指令序列。(1)将DH的低三位清0,而其他位保持不变。(2)将DI的高5位置1,而其他位保持不变。(3)将AX的第0~3位置1,第7~9位取反,第13~15位清0,其他位保持不变。(4)把标志寄存器中的IF位置1。(5)由寄存器AX、DX组成一个32位带符号数(DX中存放高16位),试求这个数的负数。(6)现有3个字节存储单元A、B、C,在不使用ADD和ADC指令的情况下实现:(A)+(B)=(C)。(7)用一条指令将CX中的整数变为奇数,如果原来已是奇数,则CX中数据保持不6变,如果原来是偶数,则(CX)+1形成奇数。(8)用一条指令将CX中的整数变为偶数,如果原来已是偶数,则CX中数据保持不变,如果原来是奇数,则(CX)-1形成偶数。3.10给出下列指令的机器目标代码。(1)MOVBL,12H[SI](2)MOVES:12H[SI],BL(3)ADDWORDPTR0ABH[BP][DI],1234H(4)SALDX,1(4)RCLBYTEPTR10H[BX],CL(5)NOTDI(6)STC(7)POPDS(8)PUSHCX习题四4.1设数据段数据定义如下:DATASEGMENTNUMBER1DW2008HNUMBER2DW15DUP(2006H)STRING1DB‘Howdoyoudo?$’BUFDB10HDUP(1,2DUP(2))DATAENDS下面几条MOV指令单独执行后,目的寄存器CX中的内容发是什么?(1)MOVCX,NUMBER1(2)MOVCX,NUMBER2(3)MOVCX,TYPENUMBER1(4)MOVCX,TYPESTRING1(5)MOVCX,LENGTHNUMBER2(6)MOVCX,LENGTHSTRING1(7)MOVCX,SIZENUMBER2(8)MOVCX,SIZEBUF4.2按下面的要求写出相应的数据定义语句。(1)定义一个字节区域,第一个字节的值为20,其后跟20个初值为0的连续字节;(2)定义一