习题答案
第二章
4 (1) 39 27H (2) 299.34375 12B.58H (3) 54.5625 36.9H 9 设机器字长为8位,写出下列各数的原码与补码
课后答案有 如果为正数,为原来的数据,若为负数,取反加1 (1)+1010101b 原码01010101b 补码 01010101b (2)-1010101b原码11010101b 补码 10101011b (3)+1111111b 原码01111111b 补码 01111111b (4)- 1111111b 原码 11111111b 补码 10000001b (5)+1000000b原码 01000000b 补码 01000000b (6) -1000000b原码 11000000b 补码11000000b
13 设下列四组为8位二进制补码表示的十六进制数,计算a+b和a-b,并判断其结果是否溢出
(1)a=37h,b=57h: a+b=8Eh 溢出 a-b=E0H= -32(不溢出)
其它题目参考答案
15 将下列算式中的十进制数表示成相应的组合BCD码并进行运算,然后用加6或减6修
正结果
(1)38+42=80h,其它自己计算 16 将下列字符串表示成相应的ASCII码
(1) Example 1 45h,78h,61h,6dh,70h,20h,31h 大写40H+次序,小写60H+次序, 字母30H+
次序
(2) XiDian University
58H,69H,44H,69H61H,63H,20H,55H,6EH,69H,76H,65H,72H,73H,69H,74H,79H (3)-108.652 2DH,31H,30H,38H,2EH,36H,35H,32H
第三章
6 将16进制数62a0h与下列各数相加,求出其结果及标志位CF,AF,SF,ZF,OF和PF的值 (1)1234H 结果74d4h, CF=0(最高位是否有进位),AF=0(D3位),SF=0,ZF=0,OF=0,PF=1(低8位是否位偶数个1)
(2)4321h 结果 A5C1H 标志位 CF=0,AF=0,SF=1,ZF=0,OF=1,PF=0 (3)CFA0H 结果3240H 标志位 CF=1,AF=0,SF=0,ZF=0,OF=0,PF=0 (4)9D60H 结果0000h 标志位 CF=1,AF=0,SF=0,ZF=1,OF=0,PF=1 7
是否有进
从下列各数减去4AE0H,求出其结果及标志位CF,AF,SF,ZF,OF,PF的数值 (1) 1234H 结果C754H 标志位CF=1,AF=0,SF=1,ZF=0,OF=0,PF=0 (2) 5D90H 结果12B0H,标志位,CF=0,AF=0,SF=0,ZF=0,OF=0,PF=0 (3) 9090H 结果45b0h,标志位CF=0,AF=0,SF=0,ZF=0,OF=1,PF=0 (4) EA04H 结果9f24h 标志位CF=0,AF=0,SF=1,ZF=0,OF=0,PF=1
1
10 (ef)=2359h,(ds)=490bh,物理地址为:4B409H 11 12
(CS)=0A7F0,(IF)=2B40H,物理地址为:AAA40H(答案错了) 下列操作可使用哪些寄存器
(1)加发和减法:通用寄存器AX,BX,CX,DX (2)循环计数:
(3)乘法和除法:乘法指令不能为段寄存器, (4)保存段地址:
(5)表示运算结果的特征: (6)指令地址
(7)从堆栈中取数的地址
13 IBM PC有哪些寄存器可以用来指示存储器的地址:BX,BP,SI,DI 14 (BX)=637DH,(SI)=2A9BH,(disp)=0c237h,(ds)=3100h,有效地址,物理地址
(1)直接寻址,eff=0c237h, 物理地址=3D237H
(2)用BX的寄存器间接寻址:eff=637dh,物理地址=3737Dh
(3)用BX的寄存器相对寻址 eff=637d+0c237=25B4H(注意是有符号数相加),物理地址
为=335b4h
(4)用BX和SI的基址变址寻址: eff=BX+SI=8318H,物理地址为39318H 有效地址EA=(BX)+(SI)=637DH+2A9BH=8E18H
物理地址Add=(DS)*10H+EA=31000H+8E18H=39E18H (5)用BX和SI的基址变址且相对寻址eff=BX+SI+DISP=504FH,物理地址3604FH 15 若(CS)=5200h,物理转移地址为5A238H,那么 (CS)=7800h,物理转移地址为
5a238h+(7800H-5200H)*10H=80238H
16 (CS)=0200H,(IP)=2BC0H,(disp)=5119h,(bx)=1200h,(ds)=212ah,(224a0h)=0600h,
(275b9h)=09bah,求下列寻址方式的转移地址
(1) 段内直接寻址方式:转移的有效地址为=ip+dsp=2bc0h+5119h=7cd9h,转移地址为
9CD9H
(2) 使用BX的寄存器间接寻址的段内间接寻址方式:有效地址=bx=1200h,转移地址为3200h EA1=(DS)*10H+(BX)=212A0H+1200H=224A0H EA2=(224A0H)=0600H
转移地址Add=(CS)*10H+EA2=02000H+0600H=02600H
(3) 使用BX的寄存器相对寻址的段内间接寻址方式:有效地址=0600h,转移地址为2600h EA1==(DS)*10H+(BX)+disp=212A0H+1200H+5119H=275B9H EA2=(275B9H)=098AH
转移地址Add=(CS)*10H+EA2=02000H+098AH=0298AH
(4) 使用BX的寄存器寻址的段内间接寻址方式:有效地址=bx=1200h,转移地址为03200h
17将下列两组的词汇和说明关联起来
2
第四章:
1变量定义
(1) var1 DW 4512H,4512,-1,100/3,10H,65530 (2) VAR2 DB ‘BYTE’,’word’,’WORD’ (3) Buf1 DB 100 DUP(?)
(4) BUF2 DB 7 DUP(5 DUP(55H),10 DUP(240))
(5) var3 DB LENGTH buf1 (6) pointer DW var1,var2
2
变量var1的逻辑地址为0100:0000H,画出下列变量的存储分配图
0100:000H12var10100:013H42Hvar3F4H41H364H063H55H55H04555H0000100:009H0Bvar455H0000B55H000100:00bH41Hvar20073H0173H65H6DH62H6CH65H3 参考习题答案
6
(DS)=2000H,(BX)=0100H,(SI)=002H,(20100H)=3412H,(20102H)=7856H, (21200H)=4C2AH,(21202H)=65B7H (1) (AX)=1200H (2) (AX)=0100H (3) (AX)=4C2AH (4) (AX)=3412H (5)
(AX)=4C2AH
(6) (AX)=7856H (7) (AX)=65B7H
7 执行下列指令后DX,寄存器内容是多少 10FFH
8
堆栈起始地址为2200:0000,栈底为0100h,(sp)=00a8h (1) 栈顶地址:220a8h (2) SS的内容: 2200h
3
(3) 再存入数据5678H,3AF2H后,SP的内容:00a4H 10 按照下列要求写出指令:
(1) AND AX, 0FFF0H (2) OR BX, 0FH (3) XOR AL, 0F0H (4) TEST BX,6
JZ SET_AL MOV AL ,0 JMP EXIT
SET_AL: MOV AL, 0FFH EXIT:
(5) TEST BX, 2
JZ SET_AL TEST BX, 4
JZ SET_AL
MOV AL ,0
JMP EXIT
SET_AL: MOV AL, 0FFH EXIT:
(6) SUB AL, 20H (7) ADD AL, 20H (8) XOR AX, 0FFFFH (9) XOR DX,7FH (10) XCHG CL, CH
11 MOV AL,40H
SHL AL,1
MOV AH,16H ADD AL, AH (AL)=96H
12 写出完成下述功能的程序段
(1) 从缓冲区BUF的0004偏移地址处传送一个字到AX寄存器MOV AX, BUF+4
(2) 将AX寄存器的内容右移2位
MOV CL, 2 SHR AX, CL
(3) 将AX内容与BUF的006偏移地址处的一个字相乘 MUL WORD PTR BUF+6
(4) 相乘结果存入BUF的0020H偏移地址处
MOV BUF+20H,AX
MOV BUF+22H, DX
13 参看课后答案
14 (DX)=BBH,(CL)=3,(CF)=1,系列指令单独执行后DX的内容
(1) SHR DX,1 (DX)=5DH
4
(2) SAR DX, CL (DX)=17H (3) SHL DX,CL (DX)=5D8H (4) SHL DX, 1 (DX)=176H (5) ROR DX, CL (DX)=6017 (6) ROL DL,CL (DX)=DDH (7) SAL DH,1 (DX)=BBH (8) RCL DX,CL (DX)=5DC (9) RCR DL, 1 (DX)=DDH 15 参看课后答案 17 参看课后答案
18 利用移位,传送和相加实现AX的内容扩大10倍
假设AX为无符号数,高位存放到DX中 MOV DX,0 OR DX,DX MOV BX,AX SHL BX,1 RCL DX,1 SHL BX,1 RCL DX,1 SHL BX,1 RCL DX,1
ADD BX,AX ADC DX,0 ADD BX,AX ADC DX,0
23 已知在字变量VAR1、VAR2和VAR3中保存有三个相同的代码,但有一个错误,编写程序段找出这个错误,并将它送AX,其地址送SI;如果3个代码都相同,则在AX中置-1标志。?
DATAS SEGMENT
;此处输入数据段代码 VAR1 DW 33H VAR2 DW 33H VAR3 DW 343H DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX
5