[试题]

请编制程序,其功能是:内存中连续存放着五个用压缩型(组合型)BCD码表示的2位十进制数,请将它们转换成十个 ASCII字符,高位的BCD码转换后放在较高的地址单元。

例如:

内存中有:21H,43H,(共五个字节)

结果为:31H('1'),32H('2'),33H('3'),34H('4'),…(共十个字节)

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

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

对程序必须进行汇编,并与IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序存在错误之处,请加以修改。

[试题程序]

E.XTRN LOAD:FAR,SAVE:FAR

N EQU 5

STAC SEGMENT STACK

D.B 128 DUP (?)

STAC ENDS

D.ATA SEGMENT

SOURCE DB N DUP(?)

RESULT DB N*2 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,NANE0 ;原始数据文件名

MOV CX,N ;字节数

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

; ********* BEGIN **********

LEA SI,SOURCE

LEA DI,RESULT

MOV CX,N

NEXT: MOV (1) ,[SI]

(2)

MOV BL,AL

A.ND AL, (3)

OR AL,30H

MOV [DI], (4)(5)

MOV AL, (6)

PUSH (7)

MOV CL, (8)

SHR AL,CL

POP (9) OR AL,30H

MOV [DI],AL(10)

LOOP NEXT

; ******** END ********

LEA DX,RESULT ; 结果数据区首址

LEA SI,NANE1 ; 结果文件名

MOV CX,N*2 ; 结果字节数

C.ALL SAVE ; 保存结果到文件

RET

START ENDP

C.ODE ENDS

E.ND START

参考答案与解析:

相关试题

请编制程序,其功能是:内存中连续存放着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,

  • 查看答案
  • 请编制程序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个二进制字节数,需对此组数进行加密,其

    [试题]请编制程序,其功能是:内存中连续存放着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部分程

  • 查看答案
  • 请编制程序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开始的内存单元中。运算结果

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

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

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

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

  • 查看答案
  • 请编制程序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

  • 查看答案
  • 请编制程序,其功能为:从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

  • 查看答案
  • 数组LIST2内存有20个压缩BCD码表示的单字节十进制数,写出完整程序,求这2

    [问答题] 数组LIST2内存有20个压缩BCD码表示的单字节十进制数,写出完整程序,求这20个BCD数之和,结果(压缩BCD码)存入SUM2双字单元。

  • 查看答案
  • 数组LIST3内存有20个压缩BCD码表示的双字节十进制数,写出完整程序,求这2

    [问答题] 数组LIST3内存有20个压缩BCD码表示的双字节十进制数,写出完整程序,求这20个BCD数之和,结果(压缩BCD码)存入SUM3双字单元。

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