Loops 条件循环内MASM x86程序集
我正在使用欧文图书馆 我想遍历一个DWORD数组,同时检查每个值是否在j和k的范围内。我的代码目前不起作用。以下是我所拥有的:Loops 条件循环内MASM x86程序集,loops,assembly,masm,irvine32,Loops,Assembly,Masm,Irvine32,我正在使用欧文图书馆 我想遍历一个DWORD数组,同时检查每个值是否在j和k的范围内。我的代码目前不起作用。以下是我所拥有的: INCLUDE Irvine32.inc COMMENT ! .386 .model flat, stdcall .stack 4096 ExitProcess PROTO, code:DWORD DumpRegs PROTO ! .data myArr DWORD 1h,2h,3h,4h prompt BYTE "Enter the value for j and
INCLUDE Irvine32.inc
COMMENT !
.386
.model flat, stdcall
.stack 4096
ExitProcess PROTO, code:DWORD
DumpRegs PROTO
!
.data
myArr DWORD 1h,2h,3h,4h
prompt BYTE "Enter the value for j and k: ", 0
counter BYTE ?
.code
MAIN PROC
mov eax, 0 ; sum
; Get user vals for j and k
mov edx, OFFSET prompt
CALL WriteString
CALL ReadInt
mov ebx, eax
CALL ReadInt
mov edx, eax
CALL sumArr ; Call #1 *****
mov ebx, 5 ; j = 5
mov edx, 8 ; k = 8
CALL sumArr ; Call #2 *****
Main endP
sumArr PROC USES esi ecx edx ebx
mov counter, LENGTHOF myArr
mov esi, OFFSET myArr ; location pointer
mov ecx, LENGTHOF myArr ; size
getArr:
cmp ebx, [esi]
jae aboveEqual
add esi, TYPE myArr
aboveEqual:
cmp edx, [esi]
jbe inRange
inRange:
add eax, [esi]
LOOP getArr
CALL DumpRegs
RET
sumArr ENDP
我希望能够对数组中的每个元素进行比较。我该怎么做呢?您忘了在SUMARR中将EAX归零。
cmp ebx、[esi]
和cmp edx、[esi]
必须在源操作数和目标操作数之间切换位置。移动
添加esi,在循环指令前键入myArr
。如果没有执行条件跳转,则无条件跳转到
添加esi,键入myArr
指令
在mov ecx中,myArr的长度是4还是16