我想编写一个简单的程序来查找数组中的最小值。我使用的是Intel 8086架构(如果我是对的?)。问题是我对汇编语言完全陌生,好吧,我只是无法弄清楚我在代码中做错了什么,被卡住了。
最后(退出之前),我的ax
寄存器不包含我的结果。
恐怕它甚至都不会放在那儿(我用Turbo Debugger工具检查寄存器的值)。
.MODEL TINY
Data SEGMENT
arr_len EQU 5
arr DB 07h, 02h, 03h, 10h, 12h
minimum DB 255
Data ENDS
Code SEGMENT
ORG 100h
ASSUME CS:Code, DS:Data, SS:Code
Start:
mov ax, SEG Data
mov ds, ax ;load data to ds reg
mov cx, arr_len ;arr_length to counter
mov bx, OFFSET arr ;load first elem.
Search:
inc bx
cmp bl, [minimum] ;compare loaded elem with min
jb Swap ;if bl<minimum
Swap:
mov minimum, bl
loop Search
mov al, minimum ;result here?
mov ax, 4C00h
int 21h
Code ENDS
END Start
谁能给我建议这里出了什么问题?提前致谢。
inc
仅在循环之前执行。这是可以使用的版本:
Search:
mov al, [bx]
cmp al, [minimum] ;compare loaded elem with min
jnb NoSwap ;if al>=minimum
mov [minimum], al ;New minimum
NoSwap:
inc bx
loop Search
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句