汇编语言上机考试三星题10

 

(***)在内存中定义一个用于加密的key和明文字符串,key中的每个数字表示将明文字符串中的对应字符进行旋转移位的次数,负数表示左移位,正数表示右移位。加密key的长度为10个字节:-2, 4, 1, 0, -3, 5,2, -4, -4, 6。先用加密key处理字符串的前10个字节,再处理接下来的10个字节,以此类推。将密文字符串保存在另一个变量中。


DATAS SEGMENT

    BUF1 DB 'ABCDEFGHIJABCDEFGHIJ'

    COUNT1 EQU $-BUF1

    BUF2 DB -2,4,1,0,-3,5,2,-4,-4,6

    COUNT2 DB 10

    BUF3 DB 100 DUP(?)

DATAS ENDS

STACKS SEGMENT

    ;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

    MOV AX,DATAS

    MOV DS,AX

    MOV ES,AX

MOV SI,0

MOV DI,0

MOV BH,COUNT1

MOV BL,COUNT2

L:

MOV AH,BUF1[SI]

MOV AL,BUF2[DI]

CMP AL,0

JL ZUO

MOV CL,AL

ROR AH,CL

MOV BUF3[SI],AH

JMP NEXT

ZUO:

NEG AL

MOV CL,AL

ROL AH,CL

MOV BUF3[SI],AH

JMP NEXT

NEXT:

DEC BL

DEC BH

CMP BH,0

JE END0

INC SI

CMP BL,0

JE L2

INC DI

JMP L

L2:

MOV DI,0

MOV BL,COUNT2

JMP L

END0:

    ;此处输入代码段代码

    MOV AH,4CH

    INT 21H

CODES ENDS

    END START

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容