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

题目

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


相似考题

2.请编制程序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的指令。”相关问题
  • 第1题:

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

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

    正确答案:B

  • 第2题:

    用逻辑运算指令实现数字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中)

  • 第3题:

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


    正确答案:93

  • 第4题:

    微机某内存单元中的内容为89H,若它是一压缩格式的BCD码,则该BCD码表示的十进制数是()。

    • A、137
    • B、-9
    • C、-119
    • D、89

    正确答案:D

  • 第5题:

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


    正确答案:53;35;5

  • 第6题:

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


    正确答案: 00101001+01010011=01111100+00000110=10000010=82H=82;
    01110011-00100100=01001111-00000110=01001001=49H=49;
    01100110+00011000=01111110+00000110=10000100=84H=84;
    0000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=207。

  • 第7题:

    变量X,Y,Z均为一字节压缩BCD码表示的十进制数,写出指令序列,求它们的和(用2字节压缩BCD码表示)。


    正确答案: XOR AX,AX;清AX,用于存放2字节结果
    MOV AL,X
    ADD AL,Y;完成X+Y
    DAA;压缩BCD码加法调整
    ADC AH,0;把可能的进位收集到AH中;AH中最大的可能值为2,因此不需要BCD加法调整
    ADD AL,Z;完成X+Y+Z
    DAA;压缩BCD码加法调整
    ADC AH,0;把可能的进位收集到AH中;计算完成,结果(2字节压缩BCD码)在AX中

  • 第8题:

    非压缩的BCD加法调整指令是()。

    • A、DAA
    • B、DAS
    • C、AAS
    • D、AAA

    正确答案:D

  • 第9题:

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

    正确答案: CODESEGMENT
    ASSUME CS:CODE
    LIST3 DW
    1234H,3456H,5678H,1523H,8263H,
    DW 5234H,4856H,1926H,3177H,6389H
    DW 2211H,3322H,4433H,5544H,6655H
    DW 7766H,8877H,9988H,1167H,3944H
    SUM3 DD ?
    START: XOR DX,DX
    XOR AX,AX;累加器清零
    LEA BX,LIST3;地址指针置初值
    MOV CX,20;循环计数器置初值
    ONE://ADD AL,CS:[BX];加入第一字节压缩BCD数(十位、个位)
    DAA;调整
    XCHG AH,AL;交换AH和AL
    INC BX;修改指针,指向高位字节(千位、百位)
    ADC AL,CS:[BX];高位累加,并收集低位进位DAA;高位(百位、千位)调整
    XCHG AH,AL;恢复AH和AL;(AH)=千位、百位,(AL)=十位、个位
    INC BX;修改指针
    XCHG DX,AX;交换AX和DX
    ADC AL,0;收集千位上的进位
    DAA;调整,得到和的十万位和万位
    XCHG DX,AX;恢复DX和AX
    LOOP ONE;循环控制
    MOV WORD PTR SUM3,AX;保存千、百、十、个位
    MOV WORD PTR SUM3+2,DX;保存十万位和万位
    MOV AX,4C00H
    INT 21H
    CODEENDS
    END START
    解析: 暂无解析

  • 第10题:

    问答题
    变量X,Y,Z均为一字节压缩BCD码表示的十进制数,写出指令序列,求它们的和(用2字节压缩BCD码表示)。

    正确答案: XOR AX,AX;清AX,用于存放2字节结果
    MOV AL,X
    ADD AL,Y;完成X+Y
    DAA;压缩BCD码加法调整
    ADC AH,0;把可能的进位收集到AH中;AH中最大的可能值为2,因此不需要BCD加法调整
    ADD AL,Z;完成X+Y+Z
    DAA;压缩BCD码加法调整
    ADC AH,0;把可能的进位收集到AH中;计算完成,结果(2字节压缩BCD码)在AX中
    解析: 暂无解析

  • 第11题:

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

    正确答案: 58的非压缩BCD是0508H 存入DX的指令:MOVDX,0508H
    58的压缩BCD和是58H 存入DX的指令:MOVDX,0058H
    解析: 暂无解析

  • 第12题:

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

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

  • 第13题:

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


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

  • 第14题:

    将下列十进制数转换为压缩和非压缩格式的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

  • 第15题:

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

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

    正确答案:A

  • 第16题:

    变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1与N2之差的指令序列。


    正确答案: MOV AX, 0
    MOV AL, N1
    SUB AL, N2
    AAS MOV DL,
    AL MOV AL,
    N1+1 SBB AL,
    N2+1
    AAS
    MOV DH, AL

  • 第17题:

    写出下列十进制数的BCD码表示形式。 456 789 123


    正确答案:456=(0100 0101 0110)BCD
    789=(0111 1000 1001)BCD
    123=(0001 0010 0011)BCD

  • 第18题:

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


    正确答案: CODESEGMENT
    ASSUME CS:CODE
    LIST2 DB
    12H,34H,56H,15H,82H,52H,48H,19H,31H,63H
    DB22H,33H,44H,55H,66H,77H,88H,99H,11H,39H
    SUM2DD ?
    START: XOR AX,AX;累加器清零
    XOR BX,BX;地址指针置初值
    MOV CX,20;循环计数器置初值
    ONE://ADD AL,LIST2[BX];加入一个压缩BCD数
    DAA;调整
    XCHG AH,AL;交换AH和AL
    ADC AL,0;收集进位(百位、千位)
    DAA;高位(百位、千位)调整
    XCHG AH,AL;恢复AH和AL;(AH)=千位、百位,(AL)=十位、个位
    INC BX;修改指针
    LOOP ONE;循环控制
    MOV WORD PTR SUM2,AX;保存千、百、十、个位
    MOV WORD PTR SUM2+2,0;高位清零
    MOV AX,4C00H
    INT 21H
    CODEENDS
    END START

  • 第19题:

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


    正确答案: CODESEGMENT
    ASSUME CS:CODE
    LIST1DB “6705762998”;20个非压缩BCD数
    DB “4322687310”SUM1DD ?;存放结果(20个数之和)
    START:XOR AX,AX;累加器清零
    MOV CX,20;循环计数器置初值
    LEA BX,LIST1;地址指针置初值
    ONE://ADD AL,CS:[BX];加入一个非压缩BCD数
    AAA;调整,结果在AH(百位、十位),AL(个位)中
    INC BX;修改指针
    LOOP ONE;循环控制
    MOV BYTE PTR SUM1,AL;保存个位
    MOV AL,AH
    MOV AH,0;百位、十位(二进制)存入AX
    AAM;分解百位到AH,十位到AL
    MOV WORD PTR SUM1+1,AX;保存百位、十位
    MOV BYTE PTR SUM1+3,0;千位清零(和最大为9*20=180)
    MOV AX,4C00H
    INT 21H
    CODEENDS
    END START

  • 第20题:

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


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

  • 第21题:

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

    正确答案: CODESEGMENT
    ASSUME CS:CODE
    LIST1DB “6705762998”;20个非压缩BCD数
    DB “4322687310”SUM1DD ?;存放结果(20个数之和)
    START:XOR AX,AX;累加器清零
    MOV CX,20;循环计数器置初值
    LEA BX,LIST1;地址指针置初值
    ONE://ADD AL,CS:[BX];加入一个非压缩BCD数
    AAA;调整,结果在AH(百位、十位),AL(个位)中
    INC BX;修改指针
    LOOP ONE;循环控制
    MOV BYTE PTR SUM1,AL;保存个位
    MOV AL,AH
    MOV AH,0;百位、十位(二进制)存入AX
    AAM;分解百位到AH,十位到AL
    MOV WORD PTR SUM1+1,AX;保存百位、十位
    MOV BYTE PTR SUM1+3,0;千位清零(和最大为9*20=180)
    MOV AX,4C00H
    INT 21H
    CODEENDS
    END START
    解析: 暂无解析

  • 第22题:

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

    正确答案: 00101001+01010011=01111100+00000110=10000010=82H=82;
    01110011-00100100=01001111-00000110=01001001=49H=49;
    01100110+00011000=01111110+00000110=10000100=84H=84;
    0000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=207。
    解析: 暂无解析

  • 第23题:

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

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