2019年整理IBM-PC汇编语言程序设计第二版课后习题答案清华大学出版社 联系客服

发布时间 : 星期一 文章2019年整理IBM-PC汇编语言程序设计第二版课后习题答案清华大学出版社更新完毕开始阅读1d7668b8effdc8d376eeaeaad1f34693daef10b1

(1)可以引起转移到L1的指令有: NB ,BE ,NL ,LE (2)可以引起转移到L1的指令有: 同上

(3)可以引起转移到L1的指令有: B,BE ,L , LE

(4)可以引起转移到L1的指令有: NB ,NBE ,NL ,NLE (5)可以引起转移到L1的指令有: 同上

(6)可以引起转移 到L1的指令有: 同(3) (7)可以引起转移 到L1的指令有: 同上 37.

MOV AL,STAUS[SI] ;把要测试的字节放到AL中 AND AL,2AH ;把第一,三,五位为一其他位为0的数--2AH,与这个字节比较,结果放到AL中

JZ ROUTINE_4 ;如果结果为0,则三位都为0 XOR AL,2AH ; 前面相与的结果再与2AH异或 JZ ROUTINE_1 ;如果结果为0,则三位都为1 BSF BL,AL ; BSR BL ,AL CMP BL,CL

;如果向前和向后测试后,第一个1 的位置相同,说明只有一个1,则异或运算前有AL中有两个1

JE ROUTINE_2 ROUTINE_1

38.(1)当括号内是:LOOP时,循环四次,程序结束后 (AX)=05 (BX)= 16 (CX)=0 (DX)=0 (2) 当括号内是: LOOPE 时,不循环,程序结束后 (AX)=02 (BX)=04 (CX)=03 (DX)=02

(3)当括号内是:LOOPNE 时:循环三次,程序结束后 (AX)=04 (BX)=11 (CX)=01 (DX)=0 39.P101

40.(1)0000 3100H (2)5100H (3)7100H

41.(1)目的地址:2004H 内容依次为: 56H F4H 23H 98H

(2)目的地址: 384CH 内容依次为: 91H 34H F2H 01H (3)目的地址: 寄存器,无物理地址~ 内容依次为:92H 6DH A2H 4CH 42.(1)PUSH AX

(SP)<------(SP)-2

(SP+1)<-----(AH) (SP)<------(AL) (2)POP ESI

(ESI)<-------((ESP)+3,(ESP)+2,(ESP)+1, (ESP)) (ESP)<-------(ESP)+4 (3)PUSH [BX]

(SP)<------(SP)-2

(SP+1)<-----([BX+1]) (SP)<------([BX]) (4) PUSHAD

(ESP)<-------(EAX)

(ESP-4)<-------(ECX) (ESP-8)<-------(EDX) (ESP-12)<-------(EBX)

(ESP-16)<-------(ESP) ;这里指的是指令执行前的ESP (ESP-20)<-------(EBP) (ESP-24)<-------(ESI) (ESP-28)<-------(EDI) (ESP)<-------(ESP)-32 (5)POP DS

(DS)<------((SP)+1,(SP)) (SP)<------(SP)+2 (6) PUSH 4

(SP)<-------(SP)-2 (SP+1)<-----0 SP)<------4

43.(1) 2CE FF93H (2) 24B 76A0H (3)909 0804H (4) 6F 13ADH 44. (1)0FFFF FFFCH (2)0FFFF FFF8H

(3)0000 0007H (4)0000 0099H 45. (EAX)=0 (EBX)=25d 46. (AX)=3d (DX)=7d 47. ADD ECX,EDX ADD ECX,ESI

MOV EDI ,ECX

48. IMUL BX,DX,100H执行的操作是: (BX)<-------(DX)*100H 49.程序实现: MOV AL,BL CBW

IDIV CL IMUL 2 MOV DX,AX 50.

JMP DI 是直接跳转,执行的操作是: (IP)<-----(IP)+(DI) JMP [DI]是间接跳转,执行的操作是: (IP)<----(IP)+([DI])跳转到DI中所指向的内存单元中的指令地址

51.假设数组名为NUMBERS,程序如下

MOV BX,0 ;后面用到 MOV CX,100H ;把循环次数放入CX MOV AL,42H

MOV SI,0 ;初始化SI ;CHECK 用来实现查找功能~

CHECK : CMP AL ,NUMBERS[SI]

INC SI

JB STORE1 ;大于42H的数的个数存入UP

JA STORE2 ;小于42H的的数的个数存入DOWN中 LOOP CHECK ;相等继续循环

STORE1 INC BL ;找到一个大于42 的数,BL值增加1 MOV UP,BL LOOP CHECK STORE2 INC BH

MOV DOWN ,BH LOOP CHECK

第四章

1.指令下列指令的错误

(1)MOV AH,BX 源操作数与目的操作数长度不相同~

(2)MOV [BX],[SI] 这是两个内存单元在传递数据,而这在汇编语言中是不允许的 (3) MOV AX,[SI][DI] 不能用两个变址连用,其中一个应为基址 (4)MOV MYDAT[BX][SI],ES:AX 同(2) (5)MOV BYTE PTR[BX],1000 必须有一个为寄存器

(6)MOV BX,OFFSET MYDAT[SI] OFFSET 不能与复杂操作数相连 (7)MOV CS,AX 不能对CS赋值 (8)MOV ECX,AX 操作数类型不同

2.(1)合法 (2)非法 (3)非法 (4)非法 3.(1)非法,操作数类型不同 (2)合法

(3)非法,不允许两个内存单元直接传递数据 (4)合法 (5)合法 (6)合法

(7)非法,必须有一个寄存器

(8)非法,两个内存单元地址相加没有意义 (9)合法

(10)非法,同(3)

4.(1)两内存单元传递数据 (2)操作数类型不同

(3)跳转指令只能跳转到符号地址

(4)转移指令后不能为变量,只能为标号 (5)格式不对, 应为 NEAR PTR 6.(1)DW 5150H (2)MOV AX,5150H

MOV ADDRESS ,AX 7. DATASG SEGMENT

FLD1B DB 'personal computer' FLD2B DB 10 DUP (32)

FLD3B DB 20H

FLD4B DB 01011001B FLD5B DB '32654' FLD6B DB 10 DUP (0)

FLD7B DB 'PART1',DUP 20 (?),'PART2',DUP 50 (?),'PART3',DUP 14 (?) FLD1W DW 0FFF0H FLD2W DW 01011001B FLD3W DW FLD7B

FLD4W DW 5,6,7,8,9 FLD5W DW 5 DUP (0)

FLD6W DW (FLD6W-FLD1W)-(FLD7B-FLD1B) 8.PLENTH 的值为22,GE表示该数据段的长度 9.L的值为7

10.(1)MOV AX,OFFSET LNAME

(2)MOV SI,WORD PTR CODE_LIST

(3)CODE_LENGHT EQU $-CODE_LIST 11.代码如下:

DATA_SEG SEGMENT DB 5

DATA_LIST DW 0FFFFH, 0,2,5,4, 5 DUP (?) DATA_SEG ENDS CODE_SEG SEGMENT

ASSUME CS: CODE_SEG, DS:DATA_SEG MOV AX, 5 MOV MAX, AX MOV AX, 0FFFFH MOV MIN, AX CODE_SEG ENDS

12.(1)10025(2)19(3)2548(4)3(5)103(6)0FFFFH(7)1(8)3 13.分别汇编成为: MOV AX,0AH MOV BL,0AH MOV CL,1

14.(1)(AX)=1(2)(AX)=2(3)(CX)=14H(4)(DX)=32H(5)(CX)=1] 15.(1)操作符错误 改为: DATA_SEG SEGMENT (2)缺少段名 在前面加个段名

(3)引用应该从;开始 把那个“/”改成“;” (4)结构混乱 改为: MAIN_PROC PROC FAR ……

MAIN_PROC ENDP END

16.程序框架如下:

DATA_SEG SEGMENT ;定義數據段