Red de conocimiento informático - Conocimiento sistemático - Programación en lenguaje ensamblador: encuentre el número máximo en una matriz, encuentre el número de números negativos en una matriz (es mejor anotar algunas declaraciones importantes)

Programación en lenguaje ensamblador: encuentre el número máximo en una matriz, encuentre el número de números negativos en una matriz (es mejor anotar algunas declaraciones importantes)

1. Encuentra el número máximo en la matriz

SEGMENTO DE DATOS

max dw 14h, 65h, 454h, 9h, 87, 248

num dw $-max

LOS DATOS TERMINAN

SEGMENTO DE CÓDIGOS

ASUME CS: CÓDIGOS, DS: DATAS

proc.principal lejos

p>

INICIO:

push ds

mov ax, 0

push ax

MOV AX, DATAS

MOV DS, AX

mov si, offset max; envía la primera dirección de la matriz a si para que si pueda usarse para operar la matriz

> mov ax, num; calcula la matriz El número controla el número de ciclos

mov cl, 2

div cl

mov cx, ax

mov bx, 0

siguiente:

empujar bx; empujar a la pila, proteger datos

empujar cx

mov bx, [si]

llamar a salida; llamar a una subrutina y generar los datos en la matriz

mov dl, 32; generar un espacio

int 21h

pop cx

pop bx

cmp bx, [si]; juzgue y compare para encontrar el valor máximo

jl dig

jmp l1

dig:

mov bx,[si]

l1:

agregar si,2

bucle siguiente

llamada crlf; retorno de carro y salto de línea

salida de llamada valor máximo

ret

main endp

output proc near ; es una subrutina que convierte números binarios en bx a hexadecimal

mov cl, 4

mov di, 4

shift:

rol bx, cl

mov ax, bx

y al, 0fh

cmp al, 09h

jg l2

añadir al, 30h

jmp l3

l2: añadir al, 37h

l3: mov dl, al

mov ah, 2

int 21h

dec di

jnz shift

ret

salida endp

crlf proc near; subrutina para retorno de carro y avance de línea<

/p>

mov dl, 0dh

mov ah, 2

int 21h

mov dl, 0ah

mov ah , 2

int 21h

ret

crlf endp

CÓDIGOS FINALIZA

FIN principal

2. Encuentre el número de números negativos en la matriz

SEGMENTO DE DATOS

matriz DW 12H, 14, -5, -10H, 33, 40, 48, -22. , - 32, 10H

NDATA DW 10 DUP(0)

N DW 0

EXTREMOS DE DATOS

SEGMENTO DE CÓDIGO

ASUME CS:CODE, DS:DATA

proc. principal lejos

INICIO: push ds

mov ax, 0

push ax

MOV AX, DATA

MOV DS, AX

mov cx, 10

mov si, matriz de desplazamiento

l1: mov bx, [si]

push cx

salida de llamada; genera los datos en la matriz

mov dl, 32

int 21h

pop cx

agregar si, 2

bucle l1

MOV BX, 0

MOV SI, 0

MOV DI, 0

MOV CX, 10

SIGUIENTE: MOV AX, ARRAY[BX]

TEST AX, 8000H; Determinar si es un número negativo

JZ L

INC N; Cuente el número de números negativos

MOV NDATA; [DI], AX

AÑADIR DI, 2

L: AÑADIR BX, 2

BUCLE SIGUIENTE

MOV DL, 0AH

MOV AH, 2

INT 21H

MOV DL, 0DH

MOV AH, 2

INT 21H

MOV DX, N

AÑADIR DL, 30H

MOV AH, 2

INT 21H

ret

extremo principal

salida

proc cerca

mov cl, 4

mov di, 4

shift:

rol bx, cl

mov ax, bx

y al, 0fh

cmp al, 09h

jg l2

añadir al, 30h

jmp l3

l2: añadir al, 37h

l3: mov dl, al

mov ah, 2

int 21h

dec di

jnz shift

ret

salida endp

CÓDIGO FINALIZA

FIN principal