【发布时间】:2011-03-14 22:57:52
【问题描述】:
将浮点值输入到数组中,然后将它们相加得到一个和
到目前为止,我有此代码,但我的标志检查输入是否为 0 以退出循环以输入浮点数,继续进行(无限循环)
目前我可以读取输入并立即输出,但不知道如何存储到数组中
%include "asm_io.asm"
segment .bss
array1 resd 20
segment .data
done db "That was ridiculously incredible! Bye!", 0
segment .text
extern puts, _printf, scanf, dump_line, stack_dump, geomean
global asm_main
asm_main:
enter 0,0
pusha
;Declare Array:
push 5
push 0
push array1
call read_sarray32
;call getfloat
;call putfloat
xor ebx, ebx
mov eax, 1
int 80h
mov eax, done
call print_string
popa
leave
ret
;beginning of get float
;*******************************getFLoat:*****************************
segment .bss
;
segment .data
fmt1 db "%lf", 0
enterNumber db "Enter Your Float Number: ", 0
segment .text
getfloat:
push ebp
mov eax, enterNumber
call print_string
mov ebp, esp
sub esp, 8
lea eax, [ebp-8]
push eax
push fmt1
call scanf
add esp, 8
fld qword [ebp -8]
mov esp, ebp
pop ebp
ret
;Beginning of putfloat
;************************putfloat:*****************************************
segment .bss
;
segment .data
fmt2 db 10, "The number is: %f", 10, 10
segment .text
putfloat:
push ebp
mov ebp, esp
sub esp, 8
fst qword [ebp - 8]
push fmt2
call printf
add esp, 12
mov esp, ebp
pop ebp
ret
;*********************READ array*************************************************
segment .bss
;
segment .data
prompt2 db "Do you have more inputs? (-1 = yes,0 = no)?: ", 0
segment .text
read_sarray32:
pusha
mov ebx, [esp+36] ;move starting position into ebx
mov edx, [esp+40] ;move max size into edx
mov ecx, 0
read_loop:
;mov eax, prompt2
;call print_string
;call read_int
call getfloat
inc ecx; increment counter
call print_nl
call putfloat
call print_nl
cmp eax, 0
jz Done
jmp continue_loop
continue_loop:
mov [ebx], eax ;move value into memory slot ebx
add ebx, 4 ;move to next location for db word
cmp ecx, edx ; did i reach maximum values of array size?
jz Done
jmp read_loop
Done:
call putfloat
sub ecx, 1 ;to offset the 0 that was entered to exit loop
mov [esp+44], ecx ;moves counter back to stack
popa
ret
【问题讨论】: