MOV AX, DATA
MOV DS, AX MOV ES, AX
LEA SI, STRING1 LEA DI, STRING2
MOV CX, 15 CLD
REPE CMPSB
JZ MATCH ;相等 LEA DX, MSG2 JMP DISPLAY MATCH:
LEA DX, MSG1 DISPLAY:
MOV AH, 09H INT 21H MOV AX, 4C00H INT 21H CODE ENDS END START
16. 数据段中已定义了一个有n个字数据的数组M,试编写程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。 DATA SEGMENT n EQU 6
M DW -66, 33, 55, -89, 28, 311 DW ? DB ? DATA ENDS
START:
MOV AX, DATA MOV DS, AX LEA BX, M MOV CX, n MOV SI, 0 XOR AX, AX
MOV [BX][2*n], AX NEXT:
MOV AX, [BX][SI] OR AX, AX JNS L1 NEG AX L1:
CMP [BX][2*n], AX JG L2
MOV [BX][2*n], AX MOV [BX][2*(n+1)], SI L2:
INC SI INC SI DEC CX JNZ NEXT
18. 已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一程序,把既在A中又在B中出现的整数存放于数组C中。 DATA SEGMENT
A DW 11, -22, 33, 88, -55, -67, 306, 39, 55, -90 DW 28, 311, 65, 887, 911
B DW 18, 25, 31, 88, -55, -65, 188, 30, -15, 77 DW 252, 54, 102, 201, 87, -94, -22, -33, 911, 306 C DW 15 DUP(0) DATA ENDS START:
MOV AX, DATA MOV DS, AX MOV ES, AX LEA SI, A LEA BX, C NEXT:
LEA DI, B CLD
MOV CX, 20 MOV AX, [SI] REPNE SCASW JNZ NOTFOND MOV [BX], AX INC BX INC BX NOTFOND: INC SI INC SI CMP SI,30 JL NEXT
23. 编写程序,将字节变量BVAR中的无符号二进制数(0~FFH)转换为BCD数,在屏幕上显示结果。 DATA SEGMENT
BVAR DB 165
BCD DB 3 DUP(0) ;转换后以3位ASCII码保存 DB '$'
DATA ENDS START:
MOV AX, DATA MOV DS, AX MOV ES, AX
MOV AL, BVAR LEA BX, BCD MOV DI, 2 MOV CL, 10 NEXT:
MOV AH, 0 DIV CL
OR AH, 30H ;余数转换为ASCII码 MOV [BX+DI], AH DEC DI
CMP AL, 0 JG NEXT LEA DX, BCD MOV AH, 09H
INT 21H ;显示结果 第六章
2. 64片10片4片, 128片11片4片,16片11片4片,2片14片2片