汇编语言上机考试31题(***)已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把既在A中又在B中出现的数存放于数组C中。

汇编语言上机考试31题(***)

题目

31.已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把既在A中又在B中出现的数存放于数组C中。

思路

一位一位的来

代码

DATAS SEGMENT
    ;此处输入数据段代码
    BUFa DW 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20    
    BUFb DW 21,22,23,24,25,26,27,28,29,30,1,2,3,4,5,6,7,8,9,10,31,32,33,34,35,36,37,38,39,40
    BUFc DW 20 DUP(?)  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    MOV SI,0
    MOV DI,0
    MOV BP,0
    
COM:
	CMP DI,60;看是否到达A数组的最后一位
	JE L	
	
	MOV BX,BUFa[SI];比较
	MOV CX,BUFb[DI]
	ADD DI,2

	CMP BX,CX	
	JE	Equal
	JNE	COM
	
Equal:
	MOV BUFc[BP],BX;存储数据
	ADD BP,2
    JMP COM
    
L:	    
	CMP SI,38;看是否到达B数组的最后一位
	JE Exit
	
	ADD SI,2
	MOV DI,0
	JMP COM
	
Exit:    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

结果

结果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是实现此任务的汇编语言代码: ``` 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系统调用将每个位的值打印到屏幕上。 希望这个代码能够帮助您解决问

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值