Red de conocimiento informático - Conocimiento del nombre de dominio - Haga tres pequeñas preguntas utilizando el lenguaje ensamblador de una microcomputadora y pida a los expertos que las respondan.

Haga tres pequeñas preguntas utilizando el lenguaje ensamblador de una microcomputadora y pida a los expertos que las respondan.

1. Supongamos cs: código, ds: datos

Segmento de datos

BUF1 db 12, 45, 98, 7, 5, -3, 6, -2, 9, 4, 4, 5, 8, 4, 21, 2, 45, 12, 5, 4, 3, 5, 75, 2, 1, 5, 7, -1

Fin de los datos

Fragmento de código

Inicio:

mov ax, data

mov ds, ax

mov es, ax

lea di, BUF1

mov cx, 65535

mov al, -1

cld

repne scasb; al -(di) == 0, es decir, al = (di) no es un número, es decir, al = (di) salta del bucle, o cx=0 salta del bucle, entonces cuando (di) = -1, salta del bucle

; Si (di) no es igual a -1, entonces cx-1 y continúa el bucle. 4c00h

int 21h

Fin del código

fin inicio

2. segmento

Inicio:

Los bits iguales a 1 se invierten y los bits iguales a 0 permanecen sin cambios

por lo tanto, el 1 en el; los 4 bits superiores se invierten y el 0 de los 4 bits inferiores permanece sin cambios

mov ax, 4c00h

int 21h

el código termina

fin de inicio

segmento de código

segmento de código

inicio

fin de inicio

3.; una subrutina. Encuentre el valor máximo y mínimo de una secuencia de datos de tipo byte sin signo en la memoria.

; La dirección inicial de la secuencia de datos de bytes sin firmar se encuentra en SI,

; Se requiere que el valor máximo se almacene en AH y que el valor mínimo se almacene en AL. El programa principal llama a subprogramas para implementar las funciones anteriores.

Supongamos cs:código, ds:datos

Segmento de datos

NUM db 12, 45, 0, 98, 12, 255, 45, 12, 36 , 88, 54, 12, 36; el valor máximo es 255 (FF), el valor mínimo es 0 (0)

COUNT db $-NUM

Fin de los datos

Segmento de código

Inicio:

mov ax, data

mov ds, ax

mov cl, COUNT; El número de datos está en CX

mov si, offset NUM El número de datos está en CX.offset NUM La dirección inicial de esta secuencia de datos de tipo byte sin signo está en SI

mov al, [si]; Suponga que el valor mínimo ahora está en al

mov ah, al ; Suponga que el valor máximo ahora está en al

inc si

lp: cmp al, [si]

jb hecho; si al es menor que [di], entonces al sigue siendo el mínimo, no es necesario cambiar

mov al, [ si]; de lo contrario, [di] es el mínimo, así que asígnalo a al

hecho: cmp ah, [si]

ja done1; di], entonces no es necesario cambiar, sigue siendo el máximo

lp: cmp ah, [si]

ja done1; cambie, sigue siendo el valor máximo o máximo

mov ah, [si]; de lo contrario, [di] es el valor máximo, luego asígnelo a al

done1: inc si

loop lp

mov ax, 4c00h

int 21h

el código termina

fin y comienzo

Baidu no es fácil de formatear, agréguelo.

El código en el archivo de código fuente está formateando

PD: si hay algo que no comprende, puede preguntar