assembly - 如何用汇编语言处理大尺寸数组?
问题描述
以下是使用 tasm 编译的汇编语言中查找数组元素的最小值和最大值的代码。但问题是它仅针对单个数字大小的数组运行,就像它只有 9 之前的数字一样。我想为数组大小 = 99 运行代码。我不知道如何处理两位数大小的数组。它还应该接受两位数大小的元素,如 34 、 22 等。现在它只接受元素 0-9。
.model small
.386p
.stack
.data
ARRAY db 10 dup(?)
msg0 db 13,10,"ENTER NO.:$"
msg1 db 13,10,"ENTER NUMBER OF ELEMENTS:$"
msg2 db 13,10,"MAX:$"
msg3 db 13,10,"MIN:$"
n db ?
max db 00H
min db 00H
first db 01H
.code
start:
mov eax,@data
mov ds,eax
mov dx,offset msg1
mov ah, 09H
int 21H
mov ah,01H
int 21H
mov n,al
sub n,30H
mov cl,n
INPUT:
mov dx,offset msg0
mov ah,09H
int 21H
mov ah,01H
int 21H
mov bl,first
cmp bl,01H
jnz minset
mov first,00h
mov min,al
minset:
sub al,30H
mov bl,max
cmp bl,al
ja nomax
mov max,al
nomax:
mov bl,min
cmp bl,al
jb nomin
mov min,al
nomin:
mov ARRAY[si],al
inc si
LOOP INPUT
mov si,0
mov cl,n
print:
mov dx,offset msg2
mov ah, 09H
int 21H
mov dl,max
add dl,30H
mov ah,02H
int 21H
mov dx,offset msg3
mov ah, 09H
int 21H
mov dl,min
add dl,30H
mov ah,02H
int 21H
EXIT:
end start
end