早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->计算机三级 -->

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

题目

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

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

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

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

试题程序;

EXTRN LOAD:FAR,SAVE:FAR

N EQU 10

STAC SEGMENT STACK

DB 128 DUP(?)

STAC ENDS

DATA SEGMENT

SOURCE DB N DUP(?) ; 顺序存放10个字节数

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

NAME0 DB 'INPUT1.DAT',0

NAME1 DB 'OUTPUT1.DAT',0

DATA ENDS

CODE SEGMENT

ASSUME 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 ; 字节数

CALL LOAD ; 从INPUT1.DAT中读取数据

;* ***BEGIN****

LEA SI,SOURCE

LEA DI,RESULT

MOV CX, 10

AGN0: MOV AL,[SI]

(1)

MOV CX,8

MOV BX,0

AGN1: MOV AH,0

SHL BL,1

(2) AL,1

RCL AH, 1

CMP 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

参考答案
正确答案:(1)PUSH CX (2) RCL (3) BH (4) JNE SET ONE(5) BH (6) AND BH01H (7) POP CX
(1)PUSH CX (2) RCL (3) BH (4) JNE SET ONE(5) BH (6) AND BH,01H (7) POP CX 解析:本题要求将8位的格雷码表示的数据转换成8位的二进制数。程序中是用寄存器 CX作计数器,使用逻辑左移指令SHL、带进位循环左移指令RCL来实现格雷码与二进制的转换。
看了请编制程序,其功能是:内存中连...的网友还看了以下: