¡¡¡Buscamos ansiosamente el código fuente en lenguaje ensamblador!!!
; Código fuente: /question/129790890.html
;
Referencias:; /p>
; Este programa está compilado, depurado y se ejecuta correctamente en el entorno integrado MASMPlus 1.2.
Segmento de código
Asumir CS: código, DS: código
----- ---------- --- ------- ---------- --
Función: Mostrar la cadena de la dirección especificada (Str_Addr)
; / p>
; Str_Addr = dirección de cadena (debe estar en el segmento de datos)
; Método de uso: Salida Str_Addr
Ejemplo de uso: Salida PromptStr
Salida MACRO Str_Addr
push ax
lea dx, Str_Addr
mov ah, 9
int 21h
hacha pop
EndM
--------- ---------- ---------- - -- -----
; Función: Generar un carácter
; Entrada: dl=carácter a mostrar
Output_Chr proc Near
empujar hacha
mov ah, 02h
int 21h
pop hacha
ret
Output_Chr endp
; ---------- ---------- -------
; Función: Línea de retorno del carro de salida Feed
Output_CTLF proc Cerca
empujar hacha
empujar dx
mov ah, 02h
mov dl, 0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop hacha p>
ret
Output_CTLF endp
------- ---------- ---------- p>
Función: convierte el número binario sin signo en AX a un código ASCII decimal claro y lo envía a la pantalla de visualización
; Entrada: AX = número binario
; >; Salir: muestra el número ASCII convertido en la posición actual del cursor
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx, 10
lea di, @@Temp_Save[6]
mov BYTE ptr [di], '$'
dec di
@Divide: xor dx, dx
div bx
o dl, 30h
mov [di], dl
dec di
test ax, 0ffffh
jnz @@Divide
inc di
push di
pop dx
mov
ah, 9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 dup(?)
Dec_ASCII EndP
------- ---------- --- -------
Función: Retrasar el número especificado de tics de reloj
; Entrada:
; segundo 18,2 ticks, aproximadamente 182 ticks en 10 segundos. Si el tiempo de retraso no es diez veces mayor que el número de segundos, el error será ligeramente mayor)
Cerca del programa de retraso
Empujar. dx
Push cx
xor ax, ax
int 1ah
mov cs: @@Times, dx
mov cs.@@Times[2], cx
Read_Time: xor ax, ax
int 1ah
sub dx, cs: @@Times.
sbb cx, cs: @@Times[2]
cmp dx, Didas
jb Read_Time
pop cx
pop dx
ret
@@Times dw 0, 0
Delay EndP
--- -- ----- --- ---------- ----
; Determinar primo
; Parámetro de entrada: AL=un entero sin signo hasta 256
; Parámetros de retorno: si AL es un número primo, establezca el indicador de redondeo; de lo contrario, borre el bit
El proceso de estimación está cerrado
Empuje si
Push cx
Push ax
lea si, PrimeLess
cmp al, 1
jz @@ Not_Prime; 1 no es un número primo p>
mov cx, 4
@@Less_Prime: cmp al, [si]
jz @@Yes_Prime 2, 3, 5, 7 son números primos
inc si
loop @@Less_Prime
test al, 1
jz @@Not_ Primos; los números pares distintos de 2 no son primos p>
lea si, PrimeLess[1]
mov cx, 3
@@Divide357: push ax p>
div BYTE ptr [si]
prueba ah, ah
jnz $ 5
pop ax
jmp @ @Not_Prime
hacha pop
inc si
bucle @@Divide357
jmp $ 5
@@ Not_Prime: clc; no primo, borrar bandera de redondeo
p>