0
アセンブリコードの作成に新しく、ループを使用して配列の値を表示するのに問題があります。私は、カウンタの値と配列の値ではなく、誰かが私が間違っていることを説明してください、また、配列の先頭を指し示すことができますか?私は別のレジスタを使用しようとしましたが、何も動作していないようです。 (それは非効率的と思われる場合は)私の教授は、私はそれをこのように行うことを要求します:MASMアセンブリの配列の値の印刷
.386
.model flat
ExitProcess PROTO NEAR32 stdcall, dwExitCode:dword
Include io.h
cr equ 0DH
Lf equ 0AH
.stack 4096
.data
newline byte CR, LF, 0
whitespace byte 32,32,0
arr dword 10 dup(?)
n dword 2
string byte 40 dup(?)
prompt byte "Please enter a value: ", 0
origArr byte "Original Array", 0
.code
_start:
mov ecx,n ; number of values in the array
lea ebx,arr ; address of the array
sub edi, edi
top: cmp ecx, 0
je done
output prompt
input string, 40
atod string
mov [arr+edi], ecx
add edi, 4
loop top
done: output origArr
mov ecx, n
call myproc
INVOKE ExitProcess, 0
PUBLIC _start
myproc proc near32
.data
val_str byte 11 dup(?), 0
.code
push eax
push edi
push ecx
sub edi,edi ; index register
top2: mov eax, [ebx+edi]
dtoa val_str, eax
output val_str
add edi,4 ; modify esi rather than ebx
loop top2
pop ecx
pop edi
pop eax
ret
myproc endp
END
任意の提案が高く評価されています。
ありがとう、とてもシンプルです - 私はそれを見逃して怒っています。 –