已知数组M包含20个互不相等的整数,数组N包含10个互不相等的整数,编程序实现把即在M中又在N中出现的整数,存放在K数组中。在屏幕上以二进制形式显示K数组元素的个数。汇编语言
时间: 2024-03-21 13:40:58 浏览: 167
好的,以下是实现此任务的汇编语言代码:
```
DATA SEGMENT
M DB 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
N DB 2, 4, 6, 8, 10, 12, 14, 16, 18, 20
K DB 20 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
XOR AX, AX
MOV DS, AX
MOV CX, 20
MOV SI, 0
MOV DI, 0
FOR_LOOP1:
MOV AL, M[SI]
MOV BX, 10
MOV DL, N[BX]
CMP AL, DL
JE FOUND
INC SI
LOOP FOR_LOOP1
JMP END_LOOP1
FOUND:
MOV K[DI], AL
INC DI
INC SI
LOOP FOR_LOOP1
END_LOOP1:
MOV CX, DI
MOV BX, 2
CALL BIN_PRINT
MOV AH, 4CH
INT 21H
BIN_PRINT PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CX, 16
MOV BX, 0001H
BIN_LOOP:
MOV DX, 0
DIV BX
ADD DL, 30H
MOV AH, 02H
INT 21H
DEC CX
JNZ BIN_LOOP
POP DX
POP CX
POP BX
POP AX
RET
BIN_PRINT ENDP
CODE ENDS
END START
```
首先,我们定义了包含20个互不相等的整数的M数组和包含10个互不相等的整数的N数组,以及一个名为K的数组来存储在M和N中同时出现的元素。
然后,在START标签处,我们将DS寄存器的值设置为0,以便访问数据段中的数组。
接下来,我们使用循环遍历M数组中的每个元素。如果该元素也出现在N数组中,我们将其添加到K数组中。
然后,我们使用CX寄存器存储K数组中元素的个数,并使用BIN_PRINT过程将其转换为二进制格式。最后,我们使用INT 21H系统调用退出程序。
在BIN_PRINT过程中,我们使用栈来保存AX、BX、CX和DX寄存器的值,并使用循环将CX寄存器中的值转换为二进制格式。我们使用INT 21H系统调用将每个位的值打印到屏幕上。
希望这个代码能够帮助您解决问题!
阅读全文