例如:
内存中有:00H,03H,2BH,67H,0CH,15H,54H,02H,D8H,C7H
结果为:00H,02H,32H,45H,081-I,19H,67H,03H,90H,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个字节数
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 DX,SOURCE ; 数据区起始地址
LEA SI,NAME0 ; 原始数据
MOV CX,N ; 字节数
C.ALL LOAD ; 从INPUT1.DAT中读取数据
;* ***BEGIN****
LEA SI,SOURCE
LEA DI,RESULT
MOV CX, 10
A.GN0: MOV AL,[SI]
MOV CX,8
MOV BX,0
A.GN1: MOV AH,0
SHL BL,1(2) AL,1
RCL AH, 1
C.MP AH, (3)(4)
JMP NEXT
SET ONE: OR BL,01H
NEXT: MOV (5) ,BL(6)
LOOP AGN1(7)
MOV [DI],BL
INC SI
INC DI
LOOP AG
[试题]请编制程序,其功能是:内存中连续存放着五个用压缩型(组合型)BCD码表示的2位十进制数,请将它们转换成十个 ASCII字符,高位的BCD码转换后放在较高的地址单元。例如:内存中有:21H,43H,(共五个字节)结果为:31H('1'),32H('2'),33H('3'),34H('4'),…(共十个字节)部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DA丁中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放, 由过程SAVE保存到文件OUTPUT
[试题]请编制程序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个二进制字节数,需对此组数进行加密,其方法为:将前一个字节数(两位十六进制数a1a2表示)的低位十六进制数a2与后一个字节数(两位十六进制数b1b2表示)的高位十六进制数b1进行交换;第一个字节数的高位十六进制数与最后一个字节数的低十六进制数进行交换,加密后的结果存入内存。例如:内存中有:50H,61H,72H,83H,94H,A5H,B6H,C7H,D8H,E9H结果为:96H,07H,18H,29H,3AH,4BH,5CH,6DH,7EH,85H部分程
[试题]请编制程序,其功能是:内存中连续存放着10个十六位二进制数。分别对每个数的高位字节和低位字节进行逻辑与运算及逻辑或运算。运算结果以字的形式按序连续存放(低位字节存入逻辑与运算的结果,高位字节存入逻辑或运算的结果)。例如:内存中有:AA55H,55AAH,FFAAH结果为: PP00H,FF00H,FFAAH部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从 RESULT开始存放, 由过程SAVE保存到文件OUTPUT1.DAT中。
[试题]请编制程序,其功能为:内存中连续存放着20个无符号字节数,求它们的和。和值按字的形式存放,此前先按序存放参加运算的20个字节。例如;内存中有:01H,02H,03H ……结果为:01H,02H,03H …… (参加运算的字节),后跟一个字(为前面各字节的和)部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT中读入从SOURCE开始的内存单元,运算结果要求从RESULT开始存放,由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功
[试题]请编制程序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
[试题]请编制程序,其功能为:从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开始的内存区域存放着多个字节的数据,其中有压缩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个8位无符号二进制数据中的最大值和最小值,然后按四舍五入原则计算其余8个数据的算术平均值,将剔除最大值和最小值之后的8个数据依次存入指定的内存区域中,并在其后存放平均值。例如:内存中有:01H,05H,04H,00H,07H,09H,02H,06H,08H,03H结果为: 01H,05H,04H,07H,02H,06H,08H,03H,05H部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从 RESU
[试题]请编制程序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