使用汇编完成下列c的数组赋值_int最大值65535

使用汇编完成下列c的数组赋值_int最大值65535已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把在A中而不在B中出现的整数放于数组C中

  • 已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把在A中而不在B中出现的整数放于数组C中。
DATAS SEGMENT
    BUFA DW 123BH,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
    ORG 40H;40H处开始存放下一条指令的数据
    BUFB DW 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
    ORG 90H
    BUFC DW 20 DUP(?)
    ORG 100H
    RST DB 4 DUP(?),0DH,0AH,'$'
DATAS ENDS

STACKS SEGMENT
    DB 256 DUP(?)
STACKS ENDS

;BUFA中每一个数字与BUFB全部数字循环比较

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV ES,AX
    LEA SI,BUFA ;源字符串
    LEA DI,BUFC ;操作的字符串
    MOV CX,20
L1:
    CLD         ;循环方向清0
    LODSW       ;把SI指向的存储单元读入AX,SI+2
    PUSH CX     ;保护寄存器CX
    PUSH DI     ;保护DI中的值
    MOV CX,30   ;BUFB的长度
    LEA DI,BUFB ;目的字符串
    REPNZ SCASW ;核心指令 一直比较字如果不为0
    POP DI
    POP CX
    JZ SAME
 	STOSW;将AX存储到地址ES:DI
SAME:
    LOOP L1
	MOV SI,0  ;准备输出    
	MOV CX,20
;传统艺能循环着把数输出
PRINT:           
	PUSH CX;保护我方CX
	MOV CL,4
	MOV CH,4
	MOV DI,0
	MOV BX,BUFC[SI];BUFC中的数据取出来打印
MOVE:
	ROL BX,CL     ;循环同一个BUFC,循环左移位数存放在CL中;比如打印1234
	MOV AL,BL     ;变为2341[AL] = 41
	AND AL,0FH    ; 41H AND 0FH = 01相当于把1取处出来
	OR AL,30H     ;转换为数字对应的asc码
	CMP AL,39H    ;39h '9'
	JBE L2        ;打印出数字
	ADD AL,7      
	;'A' A + 7 = 10 + 7 = 17 = 11H字母的专属操作 + 30H为41H'A'
L2:	
    MOV RST[DI],AL ;DI = 0
    INC DI         ;准备打印第二个字符
    DEC CH         ;影响ZF值
    JNZ MOVE
    ;固定写法输出4个字节的数据第一个不相同的数字
    LEA DX,RST
    MOV AH,09H
    INT 21H
    POP CX
    ADD SI,2
    LOOP PRINT;CX = 20接下来会有0000不要在意这些细节想改可以改
       
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
  • 结果
    在这里插入图片描述
  • 解释DEC指令
    在这里插入图片描述

今天的文章使用汇编完成下列c的数组赋值_int最大值65535分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83931.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注