Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 从任意基到任意基的程序集转换_Assembly_Numbers_Base - Fatal编程技术网

Assembly 从任意基到任意基的程序集转换

Assembly 从任意基到任意基的程序集转换,assembly,numbers,base,Assembly,Numbers,Base,我正在做一个程序来输入一个数字和基数,然后把这个数字转换成任意基数。在这个初始阶段,我从用户那里得到了数字和基数,问题是。。我怎样才能确认号码是否来自该基地 NUMBER_INPUT PROC jmp @again @ERROR: LEA DX, ILLEGAL MOV AH, 9 INT 21H @AGAIN: print num

我正在做一个程序来输入一个数字和基数,然后把这个数字转换成任意基数。在这个初始阶段,我从用户那里得到了数字和基数,问题是。。我怎样才能确认号码是否来自该基地

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

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