logo资料库

汇编语言课后答案 郑晓薇.doc

第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
资料共47页,剩余部分请下载后查看
习题一 1 分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数 11010011, 01110111, 10000011, 00101111 ,10101010 查看正确答案 无符号数: 11010011=211=D3H,01110111=119=77H,10000011=131=83H, 00101111=47=2FH,10101010=170=AAH 带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H, 00101111=+47=2FH,10101010= -86=AAH 2 十六进制运算 1A52H+4438H ,3967H-2D81H, 37H×12H ,1250H×4H 查看正确答案 5E8AH,0BE6H,3DEH,4940H 3 将十进制数变为 8 位补码,做运算(结果用二进制、十六进制、十进制表示) 29+53, 73-24, -66+82 ,-102-15 查看正确答案 00011101+00110101=01010010=52H=82 01001001+11101000=00110001=31H=49 10111110+01010010=00010000=10H=16 10011010+11110001=10001011=8BH= -117 4 用压缩 BCD 码计算(结果用二进制、BCD 码、十进制表示) 29+53, 73-24, 66+18 ,132+75 查看正确答案 00101001+01010011=01111100+00000110=10000010=82H=82 01110011-00100100=01001111-00000110=01001001=49H=49 01100110+00011000=01111110+00000110=10000100=84H=84 0000000100110010+01110101=0000000110100111+00000110 =0000001000000111=0207H=207 5 符号位扩展(字节扩展为字,字扩展为双字) 20A3H, 94H ,3456H ,7FH ,EC00H 查看正确答案 000020A3H,FF94H,00003456H,007FH,FFFFEC00H 6 若机器字长为 16 位,其无符号数表示范围是多少?带符号数表示范围是多少?分别用十进制和十六 进制表示。 查看正确答案 无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 7 写出下列十六进制数所能代表的数值或编码: (1)38H (2)FFH (3)5AH (4)0DH
查看正确答案 (1) 38H 等于十进制数 56,是十进制数 56 的补码,数字 8 的 ASCII 码,十进制数 38 的压缩 BCD 码 (2) FFH 等于十进制数-1,是带符号数-1 的补码,无符号数为 255 (3) 5AH 等于十进制数 90,是十进制数 90 的补码,大写字母 Z 的 ASCII 码 (4) 0DH 等于十进制数 13,是十进制数 13 的补码,回车符的 ASCII 码 8 将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩 BCD 码和 ASCII 码: (1)108 (2)46 (3)-15 (4)254 查看正确答案 (1) 108=01101100B=6CH,补码 01101100B,压缩 BCD 码 0000000100001000,ASCII 码 31 3038H (2) 46=00101110B=2EH,补码 00101110B,压缩 BCD 码 01000110,ASCII 码 3436H (3) –15=11110001B=F1H,补码 11110001B,ASCII 码 2D3135H (4) 254=0000000011111110B=00FEH,补码 0000000011111110B,压缩 BCD 码 000000100 1010100,ASCII 码 323534H 9 写出下列算式的二进制运算结果,标志位 CF、SF、ZF、OF 分别是什么值? (1)56+63 (2)83-45 (3)-74+29 (4)-92-37 查看正确答案 (1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0 (2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0 (3) -74+29=11010011B,CF=0,SF=1,ZF=0,OF=0 (4) -92-37=01111111B,CF=1,SF=0,ZF=0,OF=1 10 查表,指出 ASCII 码 0DH、0AH、07H、1BH、20H、40H、50H、70H 对应的控制字符。 查看正确答案 回车、换行、响铃、ESC 键、空格键、@、P、p 习题二 1 写出冯·诺依曼计算机的基本特点。 2 如何解决内存速度与 CPU 速度不匹配问题。 3 写出计算机总线的分类与作用。 4 简述 8086CPU 寄存器的分组及各自的作用。 5 标志寄存器中都有哪些标志位与计算结果有关? 6 简述逻辑地址与物理地址的概念,两者的关系。 7 存储器为什么要分段?如何分段。 8 9 8086 系统把存储器分为哪四种类型的段?各自的特点是什么。 8086CPU 的地址线为 20 根,寻址空间为 1MB。最少可划分为多少个逻辑段?最多呢? 查看正确答案 最少划分为 16 个逻辑段,最多划分为 65536 个逻辑段(每段 16 个字节) 10 在四种类型的段中通常使用哪些寄存器表示逻辑地址?
查看正确答案 CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP 11 字节单元和字单元如何区分?若给出一个地址,如何知道要访问的是字节单元还是字单元? 查看正确答案 字节单元保存 8 位数,字单元保存 16 位数。根据源操作数的属性确定要访问的是字节单元还是字单元。 12 偶地址单元和奇地址单元在保存数据上有区别吗? 查看正确答案 对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少 CPU 的访存次数。 13 有一个 32K 字节的存储区,首地址是 3302:5AC8H,写出其首单元和末单元的物理地址。 查看正确答案 首单元的物理地址=38AE8H,末单元的物理地址=38AE8H+7FFFH=40AE7H 14 什么是有效地址?如何获得有效地址。 15 存储单元地址和内容表示如下,请画出存储单元存放形式。 (1) (1280A)=3456H (2) (20021H)=4DH (3) (33450H)=37A520D1H 16 根据逻辑地址计算出物理地址,并解释逻辑地址与物理地址的对应关系。 (1) 2389:3DE9H (2) 1230:EC92H (3) 14D9:C202H 查看正确答案 (1)物理地址=27679H (2) 物理地址=20F92H (3) 物理地址=20F92H (2)和(3)的物理地址是一样的。说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上。 17 给出段地址和偏移地址如下,计算出对应的物理地址。 (CS)=54C3H,(ES)=2569H,(DS)=1200H,(SS)=4422H, (BX)=5678H,(SP)=9945H,(IP)=0E54H,(DI)=63B1H 查看正确答案 代码段 CS:IP 的物理地址=55A84H 堆栈段 SS:SP 的物理地址=4DB65H 数据段 DS:BX 的物理地址=17678H 附加段 ES:DI 的物理地址=2BA41H 18 已知堆栈区大小为 512 字节,栈底单元的物理地址为 15230H。将两个字入栈保存后,当前栈指针 所指单元的物理地址是多少? 堆栈区中还能保存多少个数据? 查看正确答案 当前栈指针所指单元的物理地址是 1522CH。堆栈区中还能保存 254 个字。 19 写出修改当前数据段 200H 开始的数据区数据的 DEBUG 命令。 查看正确答案 执行 E 200 20 对当前代码段从 100H 开始反汇编的 DEBUG 命令是什么? 查看正确答案 执行 U 100 21 在 DEBUG 下,要将寄存器 CX 的值修改为 100H,应该执行什么命令? 查看正确答案
执行 R CX,然后输入 100 22 在 DEBUG 下,怎样将数据段的 0 号~4 号字节单元填入'a'、'b'、'c'、'd'? 查看正确答案 执行 E DS:0 ‘a’ ‘b’ ‘c’ ‘d’ 习题三 1 名词解释:零地址指令,一地址指令,二地址指令。 2 分别写出与数据有关的 7 种寻址方式并举例说明。 3 已知(BX)=1290H,(SI)=348AH,(DI)=2976H,(BP)=6756H,(DS)=2E92H,(ES)=4D82 H,(SS)=2030H,请指出下列指令的寻址方式,并求出有效地址 EA 和物理地址: MOV AX,BX MOV AX,1290H MOV AX,[BX] MOV AX,DS:[1290H] MOV AX,[BP] MOV [DI][BX],AX MOV ES:[SI],AX 查看正确答案 MOV AX,BX 源操作数为寄存器寻址,EA 无,物理地址 无 MOV AX,1290H 立即寻址,EA 无,物理地址 无 MOV AX,[BX] 寄存器间接寻址,EA=1290H, 物理地址=2FBB0H MOV AX,DS:[1290H] 直接寻址,EA=1290H, 物理地址=2FBB0H MOV AX,[BP] 寄存器间接寻址,EA=6756H, 物理地址=26A56H MOV [DI][BX],AX 目的操作数为基址变址寻址,EA=3C06H, 物理地址=32526H MOV ES:[SI],AX 寄存器间接寻址,EA=348AH, 物理地址=50CAAH 4 寄存器间接寻址方式可以使用哪些寄存器作为间址寄存器? 5 立即寻址方式和寄存器寻址方式的操作数有物理地址吗? 6 什么是段超越?段超越前缀代表什么? 7 请指出下列指令的错误: MOV AX,[CX] MOV AL,1200H MOV AL,BX MOV [SI][DI],AX MOV ES:[DX],CX MOV [AX],VALUE MOV COUNT,[SI] 查看正确答案
MOV AX,[CX] 错。CX 不能为间址寄存器 MOV AL,1200H 错。立即数超出 8 位寄存器范围 MOV AL,BX 错。两个操作数不匹配 MOV [SI][DI],AX 错。两个变址寄存器不能在一起 MOV ES:[DX],CX 错。DX 不能为间址寄存器 MOV [AX],VALUE 错。AX 不能为间址寄存器 MOV COUNT,[SI] 错。两个操作数不能都是存储单元 8 根据题目要求,写出相应的汇编指令: (1) 把 BX 寄存器的值传送给 AX (2) 将立即数 15 送入 CL 寄存器 (3) 用 BX 寄存器间接寻址方式将存储单元中的字与 AX 寄存器的值相加,结果在 AX 中 (4) 把 AL 中的字节写入用基址变址寻址的存储单元中 (5) 用 SI 寄存器和位移量 VALUE 的寄存器相对寻址方式,从存储单元中读出一个字送入寄存器 AX (6) 将 AX 中的数与偏移地址为 2000H 存储单元的数相减,结果在 AX 中 查看正确答案 (1) MOV AX,BX (2) MOV CL,15 (3) ADD AX,[BX] (4) MOV [BX+SI],AL (5) MOV AX,VALUE[SI] (6) SUB AX,DS:[2000H] 9 写出用下列寻址方式将存储单元 X 中的第 3 个字取出,AX 与其相加再放入 Y 单元的指令序列。 (1)直接寻址 (2)寄存器相对寻址 (3)基址变址 查看正确答案 (1) ADD AX,[X+4] MOV Y,AX (2) MOV BX,4 ADD AX,X[BX] MOV Y,AX (3) MOV BX,4 MOV SI,OFFSET X ADD AX,[BX+SI] MOV Y,AX 10 在数据寻址方式中,哪种寻址方式的操作数与指令一起存放在代码段? 查看正确答案 立即寻址方式中操作数(立即数)和指令一起存放在代码段中。 习题四 1 汇编语言程序有什么特点?什么是源程序? 2 简要说明从源程序到可执行程序的操作过程。 3 什么是伪指令?汇编指令与伪指令有何区别?写出 4 种常用的伪指令。 4 8086 指令系统分为哪几类?举例说明算术运算类指令的用法。
5 在 8086 汇编语言中,哪些段寄存器可以用 MOV 指令赋值,哪些段寄存器不允许? 6 堆栈段寄存器 SS 和栈指针 SP 可以修改吗?如何修改? 7 入栈指令 PUSH 和出栈指令 POP 可以保存字节数据吗?要保存的话,如何实现? 8 有哪些方法可以获得操作数的有效地址? 9 解释下列伪指令的作用: (1) ASSUME CS:CODE,DS:DATA (2) END START (3) VALUE DW 12,35,-6 (4) STRING DB ‘INPUT:’ (5) MESS DB 5 DUP(?) (6) XX DD 12345678H (7) ORG 0320H (8) CONT EQU 2*3.14 10 根据题目,写出相关伪指令: (1) 定义数据段 DATA,并在数据段中定义两个字单元 X、Y,初始值都是 0 (2) 定义一个字符串 SRING,保存’Computer’ (3) 定义有 100 个字节单元的 COUNT 数组,初始值均为空 (4) 用赋值伪指令定义 PI 为 3.14 (5) 用类型操作符 LABEL 将 VALUE 单元定义为字节型 查看正确答案 (1) DATA SEGMENT X DW 0 Y DW 0 DATA ENDS (2) STRING DB ’Computer’ (3) COUNT DB 100 DUP(?) (4) PI EQU 3.14 (5) VALUE LABEL BYTE 11 下列伪指令有错吗?如果有错,请指出错误原因: (1) X1 DB 35H,0,-80 (2) X2 DB 35,260,-1 (3) X3 DB 1234H (4) X4 DW 100 (5) X5 DW 100(?) (6) X6 DD ‘AB’ 查看正确答案 (1)对。(2)错。260 超出了字节范围。(3)错。X3 是字节型,1234H 是字型,不匹配。 (4)对。(5)错。缺少 DUP。(6)对。 12 写出下列指令的执行结果: TABLE DB 3,33,33 H (1) MOV AL,TABLE (2) MOV AX,WORD PTR TABLE (3) MOV DX,OFFSET TABLE (4) MOV CL,TABLE+2 (5) MOV BX,SEG TABLE
(6) MOV BX,TYPE TABLE (7) LEA DX,TABLE 查看正确答案 (1)AL=3。(2)AX=2103H。(3)DX=TABLE 的偏移地址。(4)CL=33H (5)BX=TABLE 的段地址。(6)BX=1。(7)DX= TABLE 的偏移地址。 13 写出指令序列,分别求两个双精度数 20125D68H 和 100349A6H 的相加和相减运算。 查看正确答案 MOV DX,2012H MOV AX,5D68H MOV CX,1003H MOV BX,49A6H ADD AX,BX (SUB AX,BX) ADC DX,CX (SBB DX,CX) 14 写出将 DX、AX 中的 32 位无符号数减 CX 中的 16 位无符号数,结果存放在 DX、AX 中的指令序 列。 查看正确答案 SUB AX,CX SBB DX,0 15 写出将 extra 段的段地址传送给 ES 寄存器的指令序列。 查看正确答案 MOV AX,extra MOV ES,AX 16 根据给出的算式,写出指令序列(设 X、Y、W 为字节型,Z 为字型): (1) Z=5(X+16) (2) Z=X/4-Y (3) Z=8X+Y/16-W^2 (4) Z= (X+Y)(X-Y) -X/Y 查看正确答案 (1) MOV AL,16 ADD AL,X MOV BL,5 IMUL BL MOV Z,AX (2) MOV BL,4 MOV AL,X IDIV BL SUB AL,Y
MOV Z,AX (3) MOV AL,X MOV BL,8 IMUL BL MOV DX,AX MOV AH,0 MOV AL,Y MOV BL,16 IDIV BL CBW ADD DX,AX MOV AH,0 MOV AL,W IMUL AL SUB DX,AX MOV Z,DX (4) MOV AL,X ADD AL,Y MOV BL,X SUB BL,Y MOV AH,0 IMUL BL MOV Z,AX MOV AL,X IDIV Y CBW SUB Z,AX 17 分析下列程序段执行情况,给出结果: X DB 5,15,30 Y DB 22,14,6 Z DW ? …… MOV BX,OFFSET X MOV AL,[BX] ADD AL,Y INC BX SUB AL,[BX]
分享到:
收藏