内容发布更新时间 : 2024/11/2 18:24:36星期一 下面是文章的全部内容请认真阅读。
第三章
1.按照题目中提出的要求,写出能达到要求的一条(或几条)汇编形式的指令。 (1) 将立即数1234H送入寄存器BX; (2) 将立即数1234H送入段寄存器DS;
(3) 将变址寄存器DI的内容送入数据段中2000H的存储单元; (4) 把数据段中2000H存储单元的内容送段寄存器ES; (5) 将立即数0ABH与AL相加,结果送回AL; (6) 把BX与CX寄存器内容相加,结果送入BX;
(7) 寄存器BX中的低4位内容保持不变,其它位按位取反,结果仍在BX中; (8) 实现AX与8位数-128的乘积运算; (9) 实现CX中高、低8位内容的交换;
(10) 将DX中D0、D5、D8位置1,其余位保持不变。 解: (1) MOV BX, 1234H
(2) MOV AX, 1234H
MOV DS, AX (3) MOV [2000H], DI (4) MOV ES,[2000H] (5) ADD AL,0ABH (6) ADD BX,CX (7) XOR BX,0FFF0H (8) MOV BL,80H IMUL BL
(9) XCHG CH,CL (10) OR DX,0121H
2.顺序执行下列指令,填写指令后的空格。
MOV AX,2000H ;AH= 20H MOV DS,AX ;AL= 00H ;DS= 2000H MOV BX,2030H ;BH= 20H ;BL= 30H MOV SI,BX ;SI= 2030H PUSH BX
POP CX ;BX= 2030H ;CX= 2030H XCHG AX,SI ;AX= 2030H ;SI= 2000H ADD AX,0F43H ;AX= 2F73H ;CF= 0 CWD ;AX= 2F73H ;DX= 0000H SHL AL,CL ;AL= 00H ;CL= 30H OR AX,5555H ;AX= 7F55H AND AX,0AA55H ;AX= 2A55H MOV BL,0FFH
MUL BL ;AX= 54ABH IMUL BL ;AX= 0055H 3.指出下列各条指令中源操作数字段的寻址方式。 (1) MOV AX,0ABH ;立即寻址方式 (2) MOV AX,BX ;寄存器寻址方式
(3) MOV AX,[1234H] ;直接寻址方式 (4) MOV AX,[BX] ;寄存器间接寻址方式 (5) MOV AX,[BX+10] ;寄存器相对寻址方式 (6) MOV AX,[BX][SI] ;基址变址寻址方式 (7) MOV AX,03H[BX][SI] ;相对基址变址寻址方式 (8) ADD BX,[SI] ;寄存器间接寻址方式 (9) AND AX,1234H ;立即寻址方式 (10)XOR CX,AX ;寄存器寻址方式
4.如果TABEL为数据段中0032H单元的符号名,其中存放的内容为1234H,填写下列指令执行后空格中的内容。
MOV AX,TABEL ;AX= 1234H LEA AX,TABEL ;AX= 0032H
5.画出执行下列指令过程中堆栈区和SP的内容变化过程示意图,并标出存储单元的物理地址。
MOV AX,1000H MOV SS,AX
MOV SP,0100H;① MOV BX,SP
PUSH AX ;② PUSH BX ;③ POP CX ;④ HLT 解:
③ 00H
01H
最后指令位置 00H ② ④
10H ①
6.标出下列指令的执行顺序。 (1) MOV AX,1234H (2) CMP AX,8234H (3) JC NEXT1 (4) CBW
(5)NEXT1:MOV BX,9876H (6) CMP BX,AX (7) JB NEXT2 (8) SHR AX,1 (9)NEXT2:AND BX,1010H
100FCH
100FEH
10100H
(10) HLT
解:指令的执行顺序:
(1)→(2)→(3)→(5)→(6)→(7)→(8)→(9)→(10)。
7.指令REP MOVSB,REP LODSB,REP STOSB及REPE SCASB中,哪一条能替代以下程序段。
ABC:MOV AL,[SI]
MOV ES:[DI],AL INC SI INC DI
LOOP ABC 解:指令REP MOVSB能替代上述程序段。 8.顺序执行下列各条指令,填写空格。
MOV BX,6534H ;BX= 6534H XOR BX,0FFFFH ;BX= 9ACBH AND BX,15A0H ;BX= 1080H OR BX,2379H ;BX= 33F9H TEST BX,0002H ;BX= 33F9H 9.试写出执行下列3条指令后BX寄存器的内容。
MOV CL,21H MOV BX,6D16H SHR BX,CL
解:BX=0000H
10.试分析以下程序段所完成的功能。
MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL
解:程序段完成由DX和AX共同组成的32位数向左移动4位。
11.假定AX和BX中内容为有符号数,CX和DX中的内容为无符号数,请用比较指令和条件转移指令实现以下判断:
(1)若DX的内容超过CX的内容,则转去执行EXCEED; (2)若BX的内容大于AX的内容,则转去执行EXCEED; (3)BX的内容大于等于AX的内容,则转去执行EXCEED; (4)若CX的内容等于0,则转去执行ZERO; (5)若BX与AX的内容相等,则转去执行EQ;
(6)若BX的内容小于等于AX的内容,则转去执行EQSMA; (7)若CX的内容等于5678H,则转去执行EQ;
(8)若DX的内容低于CX的内容,则转去执行EQSM; (9)若AX的内容为正,则转去执行ABC; (10)若AX的内容为负,则转去执行ABC1。 解:(1) CMP DX,CX
JA EXCEED
(2) CMP BX, AX JG EXCEED (3) CMP BX,AX JGE EXCEED (4) CMP CX,0 JZ ZERO
(5) CMP BX,AX JZ EQ (6) CMP BX,AX JLE EQSMA (7) CMP CX,5678H JZ EQ (8) CMP DX,CX JB EQSM (9) ADD AX,0 JNS ABC
(10) ADD AX,0 JS ABC1
12.编写程序段,实现十六进制数12345678H与76543210H相减运算,运算结果存入DX、AX中,其中DX存放高位。
解:参考程序段如下:
MOV AX,5678H SUB AX,3210H MOV DX,1234H SBB DX,7654H HLT 13.编写程序段,实现十进制数12345678与76543210相加运算,运算结果用BCD码表示,并存入DX、AX中,其中DX存放高位。
解:MOV AL,78H
ADD AL,10H DAA
MOV BL,AL MOV AL,56H ADC AL,32H DAA
MOV AH,AL MOV AL,34H ADC AL,54H DAA
MOV DL,AL MOV AL,12H ADC AL,76H DAA
MOV DH,AL
MOV AL,BL HLT
14.编写程序段,将附加段中1000H单元开始的100字节单元清零。 解:参考程序段如下:
MOV CX,0064H MOV DI,1000H CLD
MOV AL,00H REP STOSB HLT 15.编写程序段,将数据段中1000H单元开始的100字节单元均存放23H。 解:参考程序段如下:
MOV CX,0064H MOV AX,DS MOV ES,AX MOV DI,1000H CLD
MOV AL,23H REP STOSB HLT