【发布时间】:2019-01-13 15:03:35
【问题描述】:
我对汇编指令有疑问。我不明白为什么在这个练习中指令 MOV BL,0 已经包含实际最大值。按照代码:
SECTION data
Vect1: db 13,15,22,7,5,3,21,2,0,10
Vect2: db 1,7,3,2,22,21,3,28,7,11
string1: db ‘ maximum is in the vector 1’,0
string2: db ‘maximum is in the vector 2’,0
SECTION text
..start:
...
FindMax:
push bp
mov bp, sp
mov si,[bp+6] ; Vect1
mov di,[bp+4] ; Vect2
mov bl,0 ; bl conteins the actual maximum ->>>WHY??
mov cx,[bp+8] ; N = 10
Loop:
mov ah,[si]
cmp ah, bl
ja NewMaximum1
LoopRef1:
inc si
mov ah,[di]
cmp ah,bl
ja NewMaximum2
LoopRef2:
inc di
loop Loop
jmp endFunc
NewMaximum1:
mov bl,ah
mov al, 0
jmp LoopRef1
NewMaximum2:
mov bl,ah
mov al, 1
jmp LoopRef2
endFunc:
pop bp
ret
提前感谢您的回答!
【问题讨论】:
-
在函数开始时,尚未检查任何元素,因此没有最大值。你留下了不相关的代码,删除了相关的代码!
-
是的,我现在发布它。
-
请注意,在 FindMax 过程中,有一个名为“新最大值”的标签。
-
这是另一部分