欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

请编制程序,其功能为:内存中存放着10个二进制数,需对此数组进行加密方法为将前一个字节数(两位

时间:2018-02-14

请编制程序,其功能为:内存中存放着10个二进制数,需对此数组进行加密。方法为将前一个字节数(两位十六进制数a1a2表示)的低位十六进制数a2与后一个字节数(两位十六进制数b1b2表示)的高位十六进制数b1进行交换:第一个字节数的高位十六进制数与最后一个字节的低位十六进制数进行交换,加密后的结果存入内存。


例如:内存中原始数据为:50H,61H,72H,83H,94H,…,E9H


结果:90H,07H,18H,29H,3AH,…,85H


部分程序已经给出,其中原始数据由LOAD 过程从文件INPUT1.DAT 中读入从SOURCE开始的内存单元,转换结果(要求从RESULT开始读入)由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功能。或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。


对程序必须进行汇编,并与IO.OBJ链接产生PROG1. EXE执行文件,最终产生运行结果。


部分程序如下:


;PROG1.ASM


EXTRN LOAD:FAR, SAVE:FAR


N EQU 10


DSEG SEGMENT


SOURCE DW N DUP (?)


RESULT DW N DUP (0)


NAME0 DB 'INPUT1.DAT',0


NAME1 DB 'OUTPUT1.DAT',0


DSEG ENDS


SSEG SEGMENT STACK


DB 128 DUP (?)


SSEG ENDS


CSEG SEGMENT


ASSUME CS:CSEG, DS:DSEG;SS:SSEG


START PROC FAR


PUSH DS


XOR AX,AX


PUSH AX


MOV AX, DSEG


MOV DS,AX


MOV ES, AX


LEA DX,SOURCE


LEA SI,NAME0


MOV CX,N


CALL LOAD


; *** BEGIN ***


MOV DI,0


MOV SI,0


MOV CX,N


CONT: MOV AL, SOURCE [SI]


MOV AH,AL


AND AL,0FH


AND AH,0F0H


INC SI


CMP SI,N


____________


MOV SI,0


ONE: MOV BL, SOURCE [SI]


MOV BH,BL


AND BL,0FH


AND BH,0FOH


____________


MOV CX,4


LI: SBR BH, 1


SHL AL,1


LOOP L1


______,CX


OR AH,BH


OR AL,BL


CMP DI, 0


JNZ STOPE1


MOV SOURCE [SI] ,AL


DEC SI


MOV SOURCE [SI], AH


INC SI


JMP NEXT


STORE1: CMP DI, N-1


JL STORE2


MOV RESULT [DI], AH


MOV DI, 0


MOV RESULT [DI], AL


JMP NEXT


STORE2: MOV ______, AH


MOV ______, AL


NEXT: INC DI


LOOP CONT


; *** END ***


LEA DX, RESULT


LEA SI, NAME1


MOV CX, N


CALL SAVE


RET


START ENDP


CSEG ENDS


END START



答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。


答 案:; *** BEGIN *** MOV DI 0 MOV SI0 MOV CXN CONT: MOV AL SOURCE [SI] MOV AH AL AND AL 0FH ; 取得低4位 AND AH 0F0H ; 取得高4位 INC SI CMP SIN JBE ONE ; 不是最后一个数跳转至ONE MOV SI 0 ONE: MOV BLSOURCE [SI] MOV BH BL AND BL 0FH AND BH 0F0H PUSH CX MOV CX 4 L1: SHR BH 1 SHL AL 1 LOOP L1 ; 循环移位 POP CX OR AH BH ; 加密运算 OR AL BL ; 加密运算 CMP DI0 JNZ STORE1 MOV SOURCE[S1) AL ; 交换位置 DEC SI MOV SOURCE[SI]AH ; 交换位置 INC SI JMP NEXT STORE1: CMP DIN-1 ; 处理的是最后一个数据? JL STORE2 ; 不是则跳转至STORE2 MOV RESULT[DI]AH MOV DI0 MOV RESULT [DI]AL JMP NEXT STORE2: MOV RESULT [D1]AH MOV SOURCE [SI]AL NEXT: INC DI ; 结果数据指针加1 LOOP CONT ; 继续处理 ; *** END *** [INPUT1.DAT 中的输入数据]: 50H61H72H83H94H2BH51H11H45HE9H [输出结果]: 90 07 18 29 32 45 B1 14 1E 50
; *** BEGIN *** MOV DI, 0 MOV SI,0 MOV CX,N CONT: MOV AL, SOURCE [SI] MOV AH, AL AND AL, 0FH ; 取得低4位 AND AH, 0F0H ; 取得高4位 INC SI CMP SI,N JBE ONE ; 不是最后一个数,跳转至ONE MOV SI, 0 ONE: MOV BL,SOURCE [SI] MOV BH, BL AND BL, 0FH AND BH, 0F0H PUSH CX MOV CX, 4 L1: SHR BH, 1 SHL AL, 1 LOOP L1 ; 循环移位 POP CX OR AH, BH ; 加密运算 OR AL, BL ; 加密运算 CMP DI,0 JNZ STORE1 MOV SOURCE[S1), AL ; 交换位置 DEC SI MOV SOURCE[SI],AH ; 交换位置 INC SI JMP NEXT STORE1: CMP DI,N-1 ; 处理的是最后一个数据? JL STORE2 ; 不是则跳转至STORE2 MOV RESULT[DI],AH MOV DI,0 MOV RESULT [DI],AL JMP NEXT STORE2: MOV RESULT [D1],AH MOV SOURCE [SI],AL NEXT: INC DI ; 结果数据指针加1 LOOP CONT ; 继续处理 ; *** END *** [INPUT1.DAT 中的输入数据]: 50H,61H,72H,83H,94H,2BH,51H,11H,45H,E9H [输出结果]: 90 07 18 29 32 45 B1 14 1E 50
相关推荐

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。