【问题标题】:Assembly Conversion any base to any base组装转换任何基地到任何基地
【发布时间】:2014-06-08 00:18:47
【问题描述】:

我正在做一个程序来输入一个数字和基数,并将这个数字转换为任何基数。在这个初始阶段,我从用户那里得到了数字和基数,问题是.. 我如何验证数字是否来自该基数?

NUMBER_INPUT PROC
   jmp @again   
   @ERROR:                        

   LEA DX, ILLEGAL               
   MOV AH, 9
   INT 21H

   @AGAIN:                  
   print num
   MOV CX, 8                   
   XOR BX, BX               
   MOV AH, 1                 

   @INPUT:                      
     INT 21H                    

     CMP AL, 0DH               
     JE @END                    

     CMP AL, 30H               
     JL @ERROR               

     ; CMP AL, 31H              
     ; JG @ERROR                  

     AND AL, 0FH           
     SHL BX, 1                 
     OR  BL, AL                 
     LOOP @INPUT             
   @END:              
   RET                          
NUMBER_INPUT ENDP


BASE_INPUT PROC
   JMP @AGAIN                   

   @ERROR:               

   LEA DX, ILLEGAL               
   MOV AH, 9
   INT 21H

   @AGAIN:                  
   print base
   MOV CX, 2                     
   XOR DX, DX               
   MOV AH, 1              

   @INPUT:                   
     INT 21H                 

     CMP AL, 0DH              
     JE @END               

     CMP AL, 30H              
     JL @ERROR                          

     AND AL, 0FH                 
     SHL DX, 1             
     OR  DL, AL               
     LOOP @INPUT               

   @END:                   
   RET                        
BASE_INPUT ENDP

【问题讨论】:

    标签: assembly numbers base


    【解决方案1】:

    唯一的方法 - 如果没有约定将数字基数表示为数字表示的一部分,使数字基数明确,是检测任何数字的数值是否大于或与预期的数字基数相同。但是即使指定了数字基数,您仍然需要检查所有数字的合法性,只是为了避免产生垃圾输出。比如说,代表值“10”的数字“A”可能不会出现在基数为 10 的数字中。“8”在数字基数 8 和更低的数字中没有位置。并且可能没有“G”(我们将其赋予数值 16)对于十六进制是非法的。您可能希望将转换器限制为基数 36,因为您将用完表示数字的有意义的符号,因为基数 36 可以使用 0-9,A-Z。

    【讨论】:

      猜你喜欢
      • 2023-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多