當用戶按下X時按下進入或退出時,我必須創建一個程序,將給定的用戶輸入(十進制)轉換爲二進制匹配。任何人都可以給出一個指示如何啓動這個任務。我們被要求使用蒙版和循環,但我不知道從哪裏開始。LC-3十進制到二進制轉換器
回答
我寫這個是因爲沒有很多二進制掩碼的例子。
二進制掩碼在彙編中非常有用,因爲它使我們能夠檢查十進制或十六進制值中的單個位。
例子: 如果我們看一下十進制數我們知道它的二進制值是,當我們AND R4, R4, R5
我們的第一循環中,我們比較與。由於位[3]在中爲零,我們然後告訴LC3模擬器打印出一個ASCII字符「0」。然後我們用下一個二進制掩碼重複這個過程。
這可能是一個棘手的概念,所以我首先看幾個循環和位掩碼的例子。
How do I write a program that prints out 「Hello World」, 5 times using a loop in LC3?
.ORIG x3000
LEA R0, PROMPT
PUTs ; TRAP x22
LD R0, ENTER
OUT ; TRAP x21
IN ; TRAP x23
AND R5, R5, #0 ; clear R5
ADD R5, R5, R0 ; Store the user input into R5
AND R1, R1, #0 ; clear R1, R1 is our loop count
LD R2, MASK_COUNT ; load our mask limit into R2
NOT R2, R2 ; Invert the bits in R2
ADD R2, R2, #1 ; because of 2's compliment we have
; to add 1 to R2 to get -4
WHILE_LOOP
ADD R3, R1, R2 ; Adding R1, and R2 to see if they'll
; will equal zero
BRz LOOP_END ; If R1+R2=0 then we've looped 4
; times and need to exit
LEA R3, BINARY ; load the first memory location
; in our binary mask array
ADD R3, R3, R1 ; use R1 as our array index and
; add that to the first array location
LDR R4, R3, #0 ; load the next binary mask into R4
AND R4, R4, R5 ; AND the user input with the
; binary mask
BRz NO_BIT
LD R0, ASCII_ONE
OUT ; TRAP x21
ADD R1, R1, #1 ; add one to our loop counter
BRnzp WHILE_LOOP ; loop again
NO_BIT
LD R0, ASCII_ZERO
OUT ; TRAP x21
ADD R1, R1, #1 ; add one to our loop counter
BRnzp WHILE_LOOP ; loop again
LOOP_END
LD R0, ENTER
OUT ; TRAP x21
HALT ; TRAP x25
; Binary Maps
BINARY .FILL b0000000000001000
.FILL b0000000000000100
.FILL b0000000000000010
.FILL b0000000000000001
.FILL b0000000000000000
; Stored Values
ENTER .FILL x000A
ASCII_ZERO .FILL x0030
ASCII_ONE .FILL x0031
MASK_COUNT .FILL x04 ; loop limit = 4
PROMPT .STRINGZ "Enter a number from 0-9"
.END
我遇到的問題是它必須適用於大於9的數字和負數,並且它也必須是16位。 – Drake
我提供了此代碼示例以幫助您朝正確的方向前進。如果您對修改後的代碼有具體問題,歡迎您將這些問題作爲新帖發佈。如果這個答案是有幫助的,請記住將其作爲回答。謝謝。 –
- 1. 十進制到二進制轉換器
- 2. 二進制到十進制和十進制到二進制轉換器
- 3. 二進制到十進制轉換
- 4. 十進制到二進制轉換
- 5. 十六進制到二進制轉換
- 6. 十進制到二進制轉換
- 7. 十進制到二進制轉換
- 8. IEEE十進制到二進制轉換
- 9. 轉換十六進制到二進制
- 10. 二進制到十六進制轉換
- 11. 轉換二進制到十進制
- 12. C#System.OverflowException二進制到十進制和十六進制轉換
- 13. 將十六進制轉換爲二進制到十六進制?
- 14. Arduino的轉換十進制轉換爲二進制到十進制
- 15. 從十進制轉換爲二進制
- 16. 將二進制轉換爲十進制
- 17. 二進制轉換爲十進制 - understaing
- 18. 從二進制轉換爲十進制
- 19. 十六進制轉換爲二進制
- 20. 將十進制轉換爲二進制
- 21. 從二進制轉換爲十進制
- 22. 十六進制轉換爲二進制
- 23. 如何將數字(十進制)轉換爲二進制(二進制)數字和從二進制到十進制?
- 24. 將十進制轉換爲十六進制/二進制
- 25. 十進制/十六進制/二進制轉換
- 26. 轉換十六進制到十進制
- 27. 十進制到二進制(二進制)
- 28. Python二進制到十進制轉換器
- 29. 二進制到十六進制轉換器
- 30. 二進制到十進制轉換器的字符數組
你有來存儲二進制值作爲內存中的字符串,或者你只需要打印的二進制值到控制檯? –
它只需要打印到控制檯 – Drake