0 1 1 (5) F596 - - - - - (6) 0A69 0 0 0 0 1
11.设AX和BX是符号数,CX和DX是无符号数,若转移目标指令的标号是NEXT,请分别为下列各项确定CMP和条件转移指令。 5分
1)CX值超过DX转移 2)AX值未超过BX转移 3)DX为0转移 4)CX值等于小于DX转移 答:
(1) CMP CX,DX JA NEXT
(2)CMP AX,BX JNA NEXT (3)CMP DX,0 JZ NEXT
(4)CMP CX,DX JBE NEXT
12.阅读分析下列指令序列 ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP L5
若AX和BX的初值分别为以下5种情况,则执行该指令序列后,程序将分别转向何处(L1-L5中的哪一个)?
1)AX=14C6H, BX=80DCH 2)AX=0B568H,BX=54B7H 3)AX=42C8H, BX=608DH 4)AX=0D023H,BX=9FD0H
11
5)AX=9FD0H, BX=0D023H 答:
(1) 程序转向L1。 (2) 程序转向L1。 (3) 程序转向L2。 (4) 程序转向L5。 (5) 程序转向L5。 13.答:
因为普通运算指令执行的是二进制数的运算,而BCD码是十进制数,所以,需要对运算结果进行十进制调整。
在做BCD码的加、减和乘法运算时,十进制调整指令放在运算指令之后;而作BCD码的除法运算时,在运算指令之前用十进制调整指令对被除数进行调整。 14.答: MOV Cl,3 10
SHR bx,cl 15.答:(略) 16.答: 17.答:
DATA SEGMENT COUNT=100H ORG 1000H
D_DATA DB COUNT DUP(?) ORG 2170H
S_DATA DB COUNT/5 DUP(1,2,3,4,5) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA START:
MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,S_DATA LEA DI,D_DATA MOV CX,COUNT REP MOVSB MOV AL,1 MOV CX,COUNT LEA DI,D_DATA AGAIN:
CMP BYTE PTR [DI],AL JNZ NEXT
MOV BYTE PTR [DI],' ' NEXT:
12
INC DI LOOP AGAIN
EXIT: MOV AH,4CH INT 21H CODE ENDS END START 11
18. 答: 19. 答: CODE SEGMENT ASSUME CS:CODE START:
MOV AX,5678H MOV DX,1234H NOT AX NOT DX ADD AX,1 ADC DX,0 EXIT:
MOV AH,4CH INT 21H CODE ENDS END START
;本程序未考虑溢出的情况。 DATA SEGMENT A1 DW 5050H
A2 DW ? ;存A1的反码 A3 DW ? ;存A1的补码 DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA MOV DS,AX MOV AX,A1 NOT AX MOV A2,AX INC AX MOV A3,AX EXIT:
MOV AH,4CH INT 21H CODE ENDS END START
13
12
20. 答: 21. 答:
DATA SEGMENT ;AT 5000H ORG 3481H DAT DB 12H DB ?,?,? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA MOV DS,AX MOV AL,DAT NEG AL
MOV DAT+1,AL MOV AL,DAT
XOR AL,00001111B MOV DAT+2,AL MOV AL,DAT
OR AL,11110000B MOV DAT+3,AL EXIT:
MOV AH,4CH INT 21H CODE ENDS END START COUNT=1000 DATA SEGMENT ORG 1000H
DAT DB 10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200) ORG 2000H MINDAT DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA MOV DS,AX LEA SI,DAT MOV CX,COUNT DEC CX
MOV AL,[SI] NEXT: INC SI
14
CMP AL,[SI] JLE ISMIN MOV AL,[SI] ISMIN: LOOP NEXT MOV MINDAT,AL EXIT:
MOV AH,4CH INT 21H CODE ENDS END START 13
22. 答: DATA SEGMENT
STRING1 DB 'hELLO!' COUNT1=$-STRING1 STRING2 DB 'hEL1O!' COUNT2=$-STRING2 IM DB 'MATCH$' NM DB 'NOT MATCH$' DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA MOV DS,AX
LEA SI,STRING1 LEA DI,STRING2 MOV CX,COUNT1 MOV BX,COUNT2 CMP CX,BX
JNZ DISPNOTMATCH NEXT:
MOV AL,[SI] MOV AH,[DI] CMP AL,AH
JNZ DISPNOTMATCH INC SI INC DI LOOP NEXT ISMATCH:
MOV DX,OFFSET IM MOV AH,9 INT 21H
15