[英]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.