這是 ARM 的組合語言,沒學過 ,上網查了一下指令... 錯了也沒辦法了. 發現你的題目格式有問題...我重排了下: 好像也不完整, 就我查到的回覆你吧, 我不是好心, 只是有興趣去查查看, 我希望老師把你當掉, 因為這些都很簡單... ADR R0, Value @ Get address of variable Value. R0 = Value 的位址 : 題目沒說位址是多少
LDRB R1, [R0] @ Load the low byte value of 16-bit variable Value.R1:_______ R1=23H , 將 在R0值所代表的位址的值下8位元, 傳送到 R1
ADR R2, Result @ Get address of variable Result.R2:_______ R2 = Result 的位址 : 題目沒說位址是多少
STRB R1, [R2] @ Store the value to low byte position of variable Result.R1:_______ R1=23H,將 R1的下8位元值存入R2值所代表的位址的值下8位元
LDRB R1, [R0,#1] @ Load the high byte value of 16-bit variable Value.R1:_______ R1=C1H , 將 在R0值所代表的位址的值次高8位元, 傳送到 R1
STRB R1, [R2,#1] @ Store the value to high byte position of variable Result. R1:_______ R2:_______ R1=C1H,R2=Result 的位址,將 C1H 存入R2值所代表的位址的值次高8位元 最後: R0= Value 的位址 R0= C1H R2= Result 的位址, 完成後 變成 0xC123
hold: BAL start @ Program end Value: .word 0xC123 @ Value to be moved 16位元資料 = C123H .ALIGN @ Need to do this because working with 16bit value ARM 都是32位元的,如果只放 16位元資料會錯,因為後面還接著放資料,所以用 .ALIGN 來 擴充成32位元,才不會存取錯誤. Result: .word 0x0 @ Storage space .end 求R0.R1.R2