簡體   English   中英

在機器代碼/匯編語言中將二進制字符串右移

[英]Shifting a Binary String to the right in machine code/assembly language

我知道向左移動15個位移會使二進制序列向右移動1。 但是,在設置初始寄存器值之后,如果寄存器1等於1,則設置為0。 該程序提供了正確的解決方案。 寄存器1中存儲的任何較大內容都會導致程序給出錯誤的解決方案。 我正在使用LC-3; 這是我的bin文件代碼:

0011000000000000        ; Orig
0010000011111111        ; R0 <- mem[x3100]
0010001011111111        ; R1 <- mem[x3101]
0101010010100000        ; R2 <- R2 AND #0
0001001001100000        ; R1 <- R1 + #0
0000010000001101        ; BRz R1
0001010010101111        ; R2 <- R2+15
0000010000001001        ; BRz R2
0001000000100000        ; R0 = R0 + #0
0000100000000011        ; BRn
0001000000000000        ; R0 <- R0+R0
0001010010111111        ; R2--
0000111111111010        ; BRnzp PCOffset
0001000000000000        ; R0 <- R0 + R0
0001000000000001        ; R0 <- R0 + #1
0001010010111111        ; R2--
0000111 111110110       ; BRnzp PCOffset
0001001001111111        ; R1--
0000 111 111110001      ; BRnzp PCOffset
0011 000 011101111      ; St R0 -> mem[x3102]
1111000000100101        ; Halt

找到了給您帶來麻煩的代碼行

0001000000000001        ; R0 <- R0 + #1

這不是在R0上加1,實際上是在R0上加R1。

0001000000000001        ; R0 <- R0 + R1

您需要用以下內容替換該行:

0001000000100001        ; R0 <- R0 + #1

您缺少立即添加位[5]。

暫無
暫無

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

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