[试题]

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

例如:

内存中有:50H,61H,72H,83H,94H,A5H,B6H,C7H,D8H,E9H

结果为:96H,07H,18H,29H,3AH,4BH,5CH,6DH,7EH,85H

部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:

E.XTRN LOAD:FAR, SAVE:FAR

N EQU 10

STAC SEGMENT STACK

D.B 128 DUP(?)

STAC ENDS

D.ATA SEGMENT

SOURCE DB N DUP(?) ; 顺序存放10个ASCII字符

RESULT DB N DUP(0) ; 存放结果

NAME0 DB 'INPUT1.DAT',0

NAME1 DB 'OUTPUT1.DAT',0

D.ATA ENDS

C.ODE SEGMENT

A.SSUME CS:CODE,DS:DATA,SS:STAC

START PROC FAR

PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

LEA OX,SOURCE ; 数据区起始地址

LEA SI,NAMEO ; 原始数据文件名

MOV CX,N ; 字节数

C.ALL LOAD ; 从INPUT1.DAT中读取数据

;****BEGIN****

MOV DI,0

MOV SI,0

MOV CX,N

A.GN1: MOV AL,SOURCE[SI]

MOV AH ,AL

A.ND AL,0FH

A.ND AH,0FOH

INC SI

C.MP SI,N(1)

MOV SI,0

LW: MOV BL,SOURCE[SI]

MOV BH,BL

A.ND BL,0FH

A.ND BH,0FOH(2) CX

MOV CX,4

L1: SHR BH,1

SHL AL,1

LOOP L1

&

参考答案与解析:

相关试题

请编制程序PROG1.ASM,其功能是:内存中连续存放着10个十六位二进制数,每

[试题]请编制程序PROG1.ASM,其功能是:内存中连续存放着10个十六位二进制数,每个数的序号依次定义为0,1,…9。统计每个数中位为0的个数N0,N1,…,N9(均用一个字节表示),然后按序将N0至N9存入内存中,最后再用一个字节表示这10个数中为0的位的总数n (n=N0+N1+…+N9)。例如:内存中有 0000H,000FH,FFFFH,…结果为 10H,0CH,00H,…,最后为n部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果

  • 查看答案
  • 请编制程序,其功能是:内存中连续存放着10个十六位二进制数。分别对每个数的高位字

    [试题]请编制程序,其功能是:内存中连续存放着10个十六位二进制数。分别对每个数的高位字节和低位字节进行逻辑与运算及逻辑或运算。运算结果以字的形式按序连续存放(低位字节存入逻辑与运算的结果,高位字节存入逻辑或运算的结果)。例如:内存中有:AA55H,55AAH,FFAAH结果为: PP00H,FF00H,FFAAH部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从 RESULT开始存放, 由过程SAVE保存到文件OUTPUT1.DAT中。

  • 查看答案
  • 请编制程序,其功能为:内存中连续存放着20个无符号字节数,求它们的和。和值按字的

    [试题]请编制程序,其功能为:内存中连续存放着20个无符号字节数,求它们的和。和值按字的形式存放,此前先按序存放参加运算的20个字节。例如;内存中有:01H,02H,03H ……结果为:01H,02H,03H …… (参加运算的字节),后跟一个字(为前面各字节的和)部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT中读入从SOURCE开始的内存单元,运算结果要求从RESULT开始存放,由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功

  • 查看答案
  • 请编制程序PROG1.ASM,其功能是:内存中连续存放着二个有符号字节序列Ak和

    [试题]请编制程序PROG1.ASM,其功能是:内存中连续存放着二个有符号字节序列Ak和Bk,求序列Ck(Ck=Ak+Bk)。例如:源数Ak:0lH,02H,02H,02H,04H,05H…源数Bk:01H,02H,02H,02H,04H,05H…结果Ck:02H,04H,04H,04H,08H,0AH…部分程序已经给出,其中原始数据由过程LOAD从文件INPUTl.DAT中读入SOURCE开始的内存元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。请在BEGIN

  • 查看答案
  • 请编制程序,其功能是:内存中连续存放着10个无符号8位格雷码表示的数,现将此10

    [试题]请编制程序,其功能是:内存中连续存放着10个无符号8位格雷码表示的数,现将此10个数转换成10个8位二进制数,结果存入内存,其转换方法为二进制数的最高位D[7]与格雷码的最高位G[7]相同,二进制数的其余七位D[k](k=6,…,0)分别为格雷码的位G[k](k=6,…,0)与二进制数的位D[k+1](k=6,…,0)异或的结果。例如:内存中有:00H,03H,2BH,67H,0CH,15H,54H,02H,D8H,C7H结果为:00H,02H,32H,45H,081-I,19H,67H,03H,

  • 查看答案
  • 请编制程序,其功能是:内存中连续存放着五个用压缩型(组合型)BCD码表示的2位十

    [试题]请编制程序,其功能是:内存中连续存放着五个用压缩型(组合型)BCD码表示的2位十进制数,请将它们转换成十个 ASCII字符,高位的BCD码转换后放在较高的地址单元。例如:内存中有:21H,43H,(共五个字节)结果为:31H('1'),32H('2'),33H('3'),34H('4'),…(共十个字节)部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DA丁中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放, 由过程SAVE保存到文件OUTPUT

  • 查看答案
  • 请编制程序PROG1.ASM,其功能是:对10个无符号字节数据排序(升序),然后

    [试题]请编制程序PROG1.ASM,其功能是:对10个无符号字节数据排序(升序),然后剔除第一个数和最后一个数,并按四舍五入原则计算其余8个数据的算术平均值。将剩余的8个数据存入指定的内存区域中,其后存放平均值。例如:内存中有:1,5,4,0,7,9,2,6,8,3结果为:1,2,3,4,5,6,7,8,5部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件 OUTPUT1.DAT中。填空BE

  • 查看答案
  • 请编制程序,其功能是:内存中有一个由16个十六位二进制数组成的数组(SOURCE

    [试题]请编制程序,其功能是:内存中有一个由16个十六位二进制数组成的数组(SOURCE)和一个字变量L。试将L作为逻辑尺对数组SOURCE进行下列处理:如L的第i位为0,则数组的第i个数不变:如L的第i位为1,则数纽的第i个数按位取反。字L的位序从低到高依次为0至15,数组下标依次从0到15。例如:L=0009H数组为:139CH,89C6H,5437H,8819H,…变换为:EC63H,89C6H,5437H,77E6H,…部分程序已给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入(L在

  • 查看答案
  • 请编制程序,其功能为:从SOURCE开始的内存区域存放着N个字节的有符号数。现找

    [试题]请编制程序,其功能为:从SOURCE开始的内存区域存放着N个字节的有符号数。现找出最大的数,结果存放到RESULT 指示的,其后存放原N个数逻辑取反后的值。例如:数据为:09H,7EH,89H,F6H,17H……67H(N个数据)结果为:7EH (最大数),F6H,81H,76H,0CH,E8H……98H(原N个数的逻辑反)部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT 中读入从SOURCE开始的内存单元,运算结果要求从RESIULT开始存放,由SAVE 过程保存到OUTP

  • 查看答案
  • 请编制程序PROG1.ASM,其功能是:以SOURCE开始的内存区域存放着多个字

    [试题]请编制程序PROG1.ASM,其功能是:以SOURCE开始的内存区域存放着多个字节的数据,其中有压缩BCD码和其他数据。现按下列编码规则进行编码:在每个压缩BCD码前面加两个字节前缀代码BEH和CCH,并在其后加两个字节后缀代码DDH和EDH;如果不是压缩BCD码,则该数据前后均加两个代码0DH和0EH。编码后的数据存放到RESULT指示的内存区域。例如:原信息为:12H,D9H,86H,54H,……结果为:BEH,CCH,12H,DDH,EDH,0DH,0EH,D9H,0DH,0EH,BEH,C

  • 查看答案
  • 请编制程序,其功能是:内存中连续存放着10个二进制字节数,需对此组数进行加密,其