58的非压缩BCD和压缩BCD各如何表示?写出存入DX的指令。

题目

58的非压缩BCD和压缩BCD各如何表示?写出存入DX的指令。

参考答案和解析
正确答案: 58的非压缩BCD是0508H 存入DX的指令:MOVDX,0508H
58的压缩BCD和是58H 存入DX的指令:MOVDX,0058H
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

请编制程序PROG1.ASM,其功能是:将连续20个字节的ASCII码(30~39之间)顺序转换成10个压缩BCD码。

例如:原始数据 31H,33H,35H,38H……(后面依次有16个ASCII码)

转换后为 13H,58H,……(后面依次有8个压缩BCD码)

部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果(要求从RESULT开始存入)由SAVE过程保存到OUTPUT. DAT中。请在BEGIN和END之间补充一段源程序,完成要求的功能。

原有数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,结果要求从RESULT开始存放,由SAVE保存到OUTPUT1.DAT文件

对程序必须进行汇编,并与IO.OBJ连接产生PROG1.EXE执行文件,最终产生运行结果(无结果或结果不正确均不得分)。

部分程序如下:

EXTRN LOAD:FAR,SAVE:FAR

N EQU 20

STAC SEGMENT STACK

DB 128 DUP(?)

STAC ENDS

DATA SEGMENT

SOURCE DB 31H,32H,33H,34H,35H,36H,37H,38H

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 ****

**** END ****

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

LEA SI, NAME1 ; 结果文件名

MOV CX,N ; 结果字节数

CALL SAVE ; 保存结果到文件

RET

START ENDP

CODE ENDS

END START

相关知识:

●BCD码和压缩BCD码

BCD码就是以二进制数表示十进制数,以4位二进制数表示1位十进制数,0000~1001表示0~9,1010~1111六个状态无意义。非压缩BCD码以一个字节表示一位BCD码,压缩BCD码一个字节表示两位BCD码。

●ASCII码与压缩BCD码之间的转换

0~9的ASCH码为30H~39H,从数字的ASCII码求数字本身,只要用他的ASCII码减去30H即可。由两位非压缩BCD码构成一个字节的压缩BCD码可将高位的BCD码移到高四位,然后与低位的BCD码进行逻辑或(OR)操作即可完成。

编程思路:

第一步:分析本程序要求完成的功能。

本程序要求完成以下功能:

(1)从数据文件INPUT1.DAT中读取20个字节的ASCII码存放在SOURCE开始的内存单元中。

(2)将SOURCE开始的20个ASCII码求出其对应的数值,然后转换成压缩的BCD码,依次放在RESULT开始的内存单元中。

(3)将处理之后的字符串存入到OUTPUT1.DAT。

第二步:用相应汇编程序来实现其功能。

(1)数据的读取和存入题目中已经给出,只要完成20个ASCII码到压缩BCD的转换即可。

(2)由ASCII码到压缩BCD码的转换过程如下:

由于20位ASCII码正好转换成10个字节压缩BCD码,不存在某个字节的BCD码只有一位。因此依次从SOURCE开始的内存单元取两个ASCII码,前一个转换成压缩BCD码的高位,后一个转换成压缩BCD码的低位来构成压缩BCD码;每两个ASCII码转换成一个字节的压缩BCD码,直至转换完毕。


正确答案:LEA SISOURCE LEA DIRESULT MOV CXN/2 LO: MOV AL[SI] SUB AL30H ;将ASCII码转换成10进制数 INC SI MOV AH[SI] SUB AH30H ;将第二个数转换成10进制数 SHL AH1 SHL AH SHL AH1 SHL AH1 ;将第二个数移到高4位中 OR ALAH ;将两个BCD码压缩到一个字节中成为压缩 BCD码 MOV [DI]AL INC SI INC DI LOOP LO
LEA SI,SOURCE LEA DI,RESULT MOV CX,N/2 LO: MOV AL,[SI] SUB AL,30H ;将ASCII码转换成10进制数 INC SI MOV AH,[SI] SUB AH,30H ;将第二个数转换成10进制数 SHL AH,1 SHL AH, SHL AH,1 SHL AH,1 ;将第二个数移到高4位中 OR AL,AH ;将两个BCD码,压缩到一个字节中,成为压缩 BCD码 MOV [DI],AL INC SI INC DI LOOP LO

第2题:

关于BCD数说法正确的是()。

  • A、BCD数53H代表十进制数83
  • B、6EH不是合法的BCD数
  • C、在汇编语言中BCD数的加法运算与二制数没有区别
  • D、压缩的BCD数用8位表示一个BCD数

正确答案:B

第3题:

非压缩BCD码用()个二进制位表示一个十进制位

A、4

B、6

C、8

D、10


参考答案:C

第4题:

已知压缩格式的BCD码10010011B,其对应的十进数是()


正确答案:93

第5题:

用逻辑运算指令实现数字0-9的ASCII码与非压缩BCD码的互相转换。


正确答案:数字0-9的ASCII码是30H-39H,非压缩BCD码的0-9是00H-09H
ASCII到非压缩BCD://AND AL,0FH(假设ASC码在AL中)
非压缩BCD到ASCII码:ADD AL,30H(设非压缩BCD码在AL中)

第6题:

BCD码是什么?十进制数“9”的BCD数据如何表示?


正确答案: BCD码用二进制数来表示十进制数的表示方法,也就是将十进制的数字转化为二进制,每一个十进制的数字0~9都对应着一个四位的二进制码。十进制数“9”的BCD码表示为“1001”。

第7题:

把二进制代码1001011101011000分别“看作”是:二进制无符号数、二进制补码、压缩BCD码、非压缩BCD码,哪一种情况下它代表的“值”最大?


正确答案: 看做二进制无符号数时,它代表的“值”最大。
分析:看作二进制补码时,它代表一个负数,而其他的情况下,它均正数。因此,看作二进制补码时,它代表的值最小。 把这组代码用十六进制数字形式写出:9758
对于无符号数,它的值等于十六进制的9758H;
对于压缩BCD码,它的值等于十六进制的9758,显然小于9758H;
对于非压缩BCD码,它的值等于十进制的78,显然更小于9758H;
因此,看作二进制无符号数时,它代表的“值”最大。

第8题:

8086汇编语言中,BCD码的运算是借用二进制数的运算指令并加以调整来实现的。其中非压缩型BCD码减法的调整指令为___

A、AAA

B、DAA

C、AAS

D、DAS


参考答案:C

第9题:

将下列十进制数转换为压缩和非压缩格式的BCD 码。  (1)102 (2)44  (3)301  (4)1000


正确答案:(1)[102]压缩BCD=00000001 00000010B
[102]非压缩BCD=00000001 00000000 0
(2)[44]压缩BCD=01000100B
[44]非压缩BCD=00000100 0
(3)[301]压缩BCD=00000011 00000001B
[301]非压缩BCD=00000011 00000000 0
(4)[1000]压缩BCD=00010000 00000000B
[1000]非压缩BCD=00000001 00000000 0

第10题:

十进制数98的压缩BCD码可表示为()

  • A、10011000
  • B、10011001
  • C、00100100
  • D、00010010

正确答案:A

更多相关问题