簡體   English   中英

在Assembly 8086中輸出數字的ASCII字符

[英]Outputting numbers' ASCII character in Assembly 8086

我在Fibonacci序列計算的每一步輸出計算值時遇到問題,它輸出計算值的相應ascii字符,如☺☻♥♣,序列應運行的次數取決於用戶,但它限制為47 :

org 100h

ask_for_input db " Please enter a number[1-47]: ","$"
inputNumber DB 0  
conv DB 10D 
newL DB 0AH,"$"      


ask-again:        
    LEA DX, newL
    MOV AH,9H
    int 21H       

   ; Ask for user input       
   LEA DX, ask_For_input                       
   mov AH,9H
   int 21H             

   ; Gets user input
   ; First digit           
    MOV ah, 01H          
    int 21h

    SUB AL, 30H
    MUL conv   
    MOV inputNumber, AL

    ; Second Digit
    MOV AH, 01H 
    int 21h

    SUB AL, 30H
    add inputNumber, AL

    ; Checks if number is above 47D
    CMP inputNumber, 2FH
    JNLE ask-again  
    ; Checks if number is below 00D
    CMP inputNumber, 00H
    JLE ask-again    

; Squence loop Counter                      
MOV CH, 00H
MOV CL, inputNumber 

; Starting calculation
prev DB 01D   
current DB 1D            

Begin:
   space DB " ","$"
   LEA DX, space
   MOV AH,9H
   int 21H    

   ; Print Current Number                            
   LEA DX, current,"$" 
   mov AH,09H
   int 21H 

   ; Finds next number
   MOV BL, prev
   add current, BL 

   ; Advances prev
   MOV BL, current
   SUB BL, prev
   MOV prev, BL             

   Loop Begin
  • 始終將數據放在執行路徑之外。 現在,您已在指令之間放置了prevcurrentspace的數據。 這將導致失敗。

     ask_for_input db " Please enter a number[1-47]: ","$" inputNumber DB 0 conv DB 10D newL DB 0AH,"$" prev DB 01D current DB 01D,"$" space DB " ","$" 
  • 為了實際打印您需要將其轉換為字符的數字。 當前的變量包含二進制值,而不是字符! 此快速解決方案僅顯示單個數字斐波那契數字:

     ; Print Current Number add current, 30H LEA DX, current mov AH,09H int 21H sub current, 30H 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM