簡體   English   中英

當用戶在匯編中輸入負數時如何在控制台中打印消息

[英]How to print a message in the console when the user inputs a negative number in assembly

我從匯編語言開始,如果用戶輸入負數,我想在控制台中打印一條消息。

我的代碼:

.globl  main

.data
# program output text constants
prompt:
.asciiz "Please enter a positive integer: "

.text

main:
    li      $v0,    4                   # issue prompt
    la      $a0,    prompt
    syscall 

    li      $v0,    5                   # get input from the user
    syscall 

    blt     $v0,    $zero,      main    # input must be positive

    # rest of the code that's executed when the input is positive

據我所知,我可以將兩個值和 go 與我的代碼中的特定目標進行比較,在這種情況下,我使用blt : "branch less than",它檢查用戶$v0的輸入是否小於0與否,如果它小於0 ,則代碼再次從main開始讀取。

這段代碼的output:

Please enter a positive integer: -2
Please enter a positive integer: -3
Please enter a positive integer: 

每當用戶輸入負值時,我都能夠實現輸入提示的循環,但我也想向控制台打印一條錯誤消息。 我怎樣才能做到這一點?

感謝Peter的第一條評論,這確實敲響了警鍾。 我只想在輸入小於零時打印錯誤提示。 就我目前對匯編語言的了解而言,第二條評論有點難以理解,但我想出了一個使用 function 的解決方案。 簡化我的問題,我想執行兩個任務,第一個是向控制台打印一條錯誤消息,第二個是從main啟動代碼。 我將代碼都放在 function 中

func:
    li      $v0,    4
    la      $a0,    "Error: Invalid input"
    syscall 

    b       main

並在用戶輸入負數時調用它

main:
    li      $v0,    4                   # issue prompt
    la      $a0,    prompt
    syscall 

    li      $v0,    5                   # get n from user
    syscall 

    blez    $v0,    func                # n must be positive

還要再次感謝您的第三條評論,我現在確實意識到我犯了一個錯誤,我沒有檢查用戶是否輸入了0

您必須利用blez指令來實現這一點。 檢查用戶的輸入是否小於 0,然后跳轉到代碼中的 label,如果輸入的是負數,則打印錯誤消息。 然后應該出現輸入新號碼的提示。

暫無
暫無

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

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