已知数组M包含20个互不相等的整数,数组N包含10个互不相等的整数,编程序实现把即在M中又在N中出现的整数,存放在K数组中。在屏幕上以二进制形式显示K数组元素的个数。用dosbox汇编语言编程
时间: 2024-03-22 14:41:40 浏览: 121
好的,以下是汇编代码实现这个功能:
```
.model small
.stack 100h
.data
M db 11, 34, 56, 78, 90, 23, 45, 67, 89, 12, 33, 44, 55, 66, 77, 88, 99, 21, 32, 43
N db 12, 34, 56, 78, 90, 23, 45, 67, 89, 77
K db 20 dup(0)
.code
main proc
mov ax, @data
mov ds, ax
mov cx, 20 ; M数组元素个数
mov si, 0 ; M数组下标
for1:
mov al, M[si]
mov dx, 10 ; N数组元素个数
mov di, 0 ; N数组下标
for2:
cmp al, N[di]
jne not_found ; 如果不相等,跳过
mov bl, 1
mov K[si], bl ; 在K数组中标记
jmp found
not_found:
inc di
loop for2
found:
inc si
loop for1
; 统计K数组元素个数
mov cl, 0 ; 计数器清零
mov si, 0 ; K数组下标
count:
cmp K[si], 1
jne skip
inc cl
skip:
inc si
cmp si, 20
jl count
; 将计数器的值以二进制形式显示在屏幕上
mov ah, 2
mov dl, cl
add dl, 30h ; 转换为ASCII码
int 21h
mov ah, 4ch
int 21h
main endp
end main
```
注释已经写得很详细了,这里简单解释一下:
1. 首先定义三个数组M、N、K,并将M和N的元素依次与对方比较,如果相等就在K数组中标记。
2. 最后再遍历一遍K数组,统计其中1的个数,即为满足条件的元素个数。
3. 将计数器的值以二进制形式显示在屏幕上。
4. 程序结束。
注意:这段代码使用的是DOSBox汇编语言,如果你要在其他环境下使用,可能需要进行一些修改。
阅读全文