编程实现将片内RAM 20H单元的压缩BCD码转换为非压缩BCD码,结果存于R0和R1中

编程实现将片内RAM 20H单元的压缩BCD码转换为非压缩BCD码,结果存于R0和R1中


参考答案和解析
(1) MOV A,20H ADD A,21H MOV 22H,A (2) CLR C MOV A,20H SUBB A,21H MOV 22H,A (3) MOV A,20H MOV B,21 MUL AB MOV 22H,B MOV 23H,A (4) MOV A,20H MOV B,21H DIV AB MOV 22H,A MOV 23H,B (5) ANL A,#0FCH ORL A,#0C0H XRL A,#0F0H

相关考题:

下面是实现将AL内容加1的压缩型BCD码加法程序段,其中正确的指令序列是()。 A、INCALDAAB、ADDAL,1DASC、ADDAL,1DAAD、STCAAA

请编制程序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:FARN EQU 20STAC SEGMENT STACKDB 128 DUP(?)STAC ENDSDATA SEGMENTSOURCE DB 31H,32H,33H,34H,35H,36H,37H,38HRESULT DB N DUP(0)NAME0 DB 'INPUT1.DAT', 0NAME1 DB 'OUTPUT1.DAT', 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXLEA 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 ; 保存结果到文件RETSTART ENDPCODE ENDSEND 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码,直至转换完毕。

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

将十进制的982转换为BCD码,结果为()A、1011010000010B、1001011000010C、1001010000010D、1001010001010

要完成以下的数据传送,应如何用MCS-51指令实现? ⑴ R1的内容传送到R0; ⑵ 片外RAM 20H单元的内容送R0; ⑶ 片外RAM 20H单元的内容送片内RAM 20H单元; ⑷ 片外RAM 1000H单元的内容送片内RAM 20H单元; ⑸ ROM 2000H 单元的内容送R0; ⑹ ROM 2000H 单元的内容送片内RAM 20H单元; ⑺ ROM 2000H 单元的内容送片外RAM 20H单元。

在以3000H为首地址的外部RAM中,存放了14个以ASCII码表示的0~9的数,试编写程序将它们转换成BCD码,并以压缩BCD形式存放在以2000H为首地址的外部RAM中。

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

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

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

微机某内存单元中的内容为89H,若它是一压缩格式的BCD码,则该BCD码表示的十进制数是()。A、137B、-9C、-119D、89

35H代表的ASCII字符为‘5’,代表十六进制数时等价的十进制值为(),代表压缩8421BCD码等价的十进制值为(),代表非压缩8421BCD码等价的十进制值为()。

十进制数74转换为8421BCD码应当是(01110100)8421BCD。

用压缩BCD码计算(结果用二进制、BCD码、十进制表示): 29+53; 73-24; 66+18; 132+75。

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

数组LIST1内存有20个非压缩BCD码表示的单字节十进制数,写出完整程序,求这20个BCD数之和,结果(非压缩BCD码)存入SUM1双字单元。

将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩BCD码和ASCII码: (1)108; (2)46; (3)-15; (4)254。

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

BCD码分为有权码和无权码两种,下列编码属于有权码的是()。A、8421BCD码B、2421BCD码C、格雷码D、5121BCD码

将BCD码的10000001001转换为BCD码,结果为:791。

将十进制的109转换为BCD码,结果为:000100001001。

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

问答题用压缩BCD码计算(结果用二进制、BCD码、十进制表示): 29+53; 73-24; 66+18; 132+75。

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

多选题BCD码分为有权码和无权码两种,下列编码属于有权码的是()。A8421BCD码B2421BCD码C格雷码D5121BCD码

问答题将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩BCD码和ASCII码: (1)108; (2)46; (3)-15; (4)254。

问答题把二进制代码1001011101011000分别“看作”是: (1)二进制无符号数  (2)二进制补码  (3)压缩BCD码  (4)非压缩BCD码    哪一种情况下它代表的“值”最大?

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

问答题在以3000H为首地址的外部RAM中,存放了14个以ASCII码表示的0~9的数,试编写程序将它们转换成BCD码,并以压缩BCD形式存放在以2000H为首地址的外部RAM中。