首页 > 解决方案 > 如何用汇编语言处理大尺寸数组?

问题描述

以下是使用 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


标签: assemblyx86-16

解决方案


推荐阅读