LC-3 어셈블리 언어를 기반으로하는 .asm 프로그램을 작성하는 중입니다. 문자열 목록을 반복하고 각 문자열을 역순으로 목록에 다시 저장합니다 . 예를 들어문자열 반전 LC3 어셈블리 언어
:이 프로그램은이 목록을 뒤집어 것
STRINGS .STRINGZ "aabbb"
"bbcva"
"abcde"
에 "bbbaa
", "avcbb
"및 "edcba
"- 따라서, 문자열을 반대하지만,리스트의 순서를 유지.
현재 외부 루프가 문자열에서 문자열로 이동하고 내부 루프가이를 뒤집어서 내 엉덩이를 걷어차는 중첩 루프 아이디어를 만들고 있습니다! 나는 자바에서 코드를 작성하여 동일한 작업을 수행했으며 5 분이 걸렸지 만 어떤 이유로 어셈블리가 단지 내 머리에 똥을 .다. 이 작업을 수행하는 방법에 대한 지침이 있습니까?
.ORIG x3000
LEA R0, STRINGS ; Load the address of the first char of the list of strings
Loop until NOP is found, signaling end of the string.
LEA R1, the address above ; stores the address of the last char
LDR R2, #0 Offset +1 ; load the first char to be flipped
LDR R3, #0 Offset +2 ; load the last char to be flipped
STR R3, #0 Offset +1 ; store the last char in the mem addr of the first
STR R2, #0 Offset +2 ; store the first char in the addr of the last
ADD R1, R1 + 1 ; increment the addr of the first char to move to the second
ADD R2, R2 - 1 ; decrement the addr of the last char the move the second-to-last
loop back to beginning somehow
그리고 문자열 사이의 외부 루프를 수행하는 방법 조금도 생각하지했습니다 :
는 여기에 내가 사이비 및 조립의 혼합으로, 지금까지 무슨이다.
TL; DR - 메모리의 문자열을 뒤집는 어셈블리 프로그램입니다. 도움을 받으십시오.