Red de conocimiento informático - Conocimiento sistemático - El lenguaje ensamblador implementa programas de entrada y salida en ejercicios de digitación en entorno DOS

El lenguaje ensamblador implementa programas de entrada y salida en ejercicios de digitación en entorno DOS

mov dh,5

mov dl,0

mov ah,2

int 10h

lea dx,leter

mov ah,09h

int 21h

lea dx,string

mov ah,0Ah

int 21h

mov cl,0h

mov bx,-1h

mov al,[cadena+1]

sub al,1h

mov ah,0h

bb2: inc bx

mov dh,string1[bx+2]

mov ch ,leter[bx]

cmp ch,dh

condado de jz

cmp bx,ax

jz out2

jmp bb2

condado: inc count1

cmp bx,ax

jz out2

jmp bb2

out2: lea dx,enter1

mov ah,09h

int 21h

pop1

;------- --------------------sjm-------------------------------- ---

;-----------fin de hora-----------

MOV AH,2Ch

INT 21h

SUB CL,min

MOV min,CL

CMP DH,segundo

JB fen2

JMP gettime2

fen2: DEC min

AGREGAR DH,60

gettime2: SUB DH,segundo

MOV segundo ,DH

;-----------hora finalizada----------

--------- ---- tiempo de salida -----------

MOV BH,0

MOV DH,1

MOV DL,60

MOV AH,2

INT 10h

LEA DX,ut

MOV AH,09h

INT

21h

MOV BH,0

MOV DH,3

MOV DL,67

MOV AH,2

INT 10h

LEA DX,mas7

MOV AH,09h

INT 21h

MOV DL, min

MOV BL, 10

MOV AX, 00h

MOV AL, DL

DIV BL

MOV CH, AH

AÑADIR AL, 30h

MOV BH,0

MOV DH,3

MOV DL,65

MOV AH,2

INT 10h

MOV DL, AL

MOV AH, 02h

INT 21h

AÑADIR CH, 30h

MOV DL, CH

MOV AH, 02h

INT 21h

MOV DL, segundo

MOV BL, 10

MOV AX, 00h

MOV AL, DL

DIV BL

MOV CH, AH

AÑADIR AL, 30h

MOV BH,0

MOV DH,3

MOV DL,72

MOV AH,2

INT 10h

MOV DL, AL

MOV AH, 02h

INT 21h

AÑADIR CH, 30h

MOV DL, CH

MOV AH, 02h

INT 21h

p>

MOV BH,0

MOV DH,3

MOV DL,72

MOV AH,2

INT 10h

;--------fin del tiempo de salida----------

endm

hards macro letra,leter ,cadena1

push1

;hora--------------------------

MOV AH,2Ch

INT 21h

MOV min,CL

MOV segundo,DH

;----- --------------------------

mov bh,0h

mov dh,1< / p>

mov dl,23

mov ah,2

int 10h

lea dx,msg3

mov ah, 09h

int 21h

mov bh,0h

mov dh,3

mov dl,10

mov ah,2

int 10h

lea dx,letra

mov ah,09h

int 21h

;----------------------------------sjm------------- -------- ---------------------

mov bh,0h

mov dh, 5

mov dl,0

mov ah,2

int 10h

lea dx,leter

mov ah,09h

int 21h

lea dx,string

mov ah,0Ah

int 21h

mov cl,0h

mov bx,-1h

mov al,[cadena+1]

sub al,1h

mov ah,0h

bb3: inc bx

mov dh,string1[bx+2]

mov ch,leter[bx]

cmp ch,dh

jz countz

cmp bx,ax

jz out3

jmp bb3

countz: inc count1

cmp bx,ax

jz out3

jmp bb3

out3: lea dx,enter1

mov ah,09h

int 21h

pop1

;----------------- -

-----------------------sjm--------------------------

;-----------fin de hora-----------

MOV AH,2Ch

INT 21h

SUB CL,min

MOV min,CL

CMP DH,segundo

JB fen3

JMP gettime3

fen3: DEC min

AGREGAR DH,60

gettime3: SUB DH,segundo

MOV segundo,DH

;-----------hora finalizada----------

; -tiempo de salida -----------

MOV BH,0

MOV DH,1

MOV DL,60

MOV AH,2

INT 10h

LEA DX,ut

MOV AH,09h

INT 21h p>

MOV BH,0

MOV DH,3

MOV DL,67

MOV AH,2

INT 10h

LEA DX,mas7

MOV AH,09h

INT 21h

MOV DL, min

MOV BL, 10

MOV AX, 00h

MOV AL, DL

DIV BL

MOV CH, AH

AÑADIR AL, 30h

MOV BH,0

MOV DH,3

MOV DL,65

MOV AH, 2

INT 10h<

/p>

MOV DL, AL

MOV AH, 02h

INT 21h

AÑADIR CH, 30h

MOV DL , CH

MOV AH, 02h

INT 21h

MOV DL, segundo

MOV BL, 10

MOV AX, 00h

MOV AL, DL

DIV BL

MOV CH, AH

AÑADIR AL, 30h

MOV BH,0

MOV DH,3

MOV DL,72

MOV AH,2

INT 10h

MOV DL, AL

MOV AH, 02h

INT 21h

AÑADIR CH, 30h

MOV DL, CH

MOV AH, 02h

INT 21h

MOV BH,0

MOV DH,3

MOV DL,72

MOV AH,2

INT 10h

;--------fin del tiempo de salida----- -----

endm

;----------------------------- ----------------------------------------

mao_hao_p macro

push1

mov dl,':'

mov ah,02h

int 21h

pop1

endm

;------------------------------------

div_10_p macro num

push1

mov al,num

cbw

mov cl,10

div cl

mov bl,ah

mov dl,al

agregar dl,30h

mov ah, 02h

int 21h

mov dl,bl

> agregar dl,30h

mov ah,02h

int 21h

pop1

endm

;- -------------------------------------------------- ------------------

;----------------------- - ---------------------------------------

scr macro chuan, dst,tabla2,tabla3

push1

mov cx,10

mov bx,0

otra vez2:

mov al,table2[scr+bx]

mov table3[dst+bx],al

inc bx

bucle otra vez2

pop1

endm

;-------------------------------- -- --------------------------------

recuento de macros pai_xu, tabla, tabla1, tabla2 ,tabla3

push1

mov cx,count

otra vez13:

push cx

mov bx,- 1

mov dl,0

otra vez33:

inc bx

cmp bx,count

jz out13

cmp dl,table[bx]

jge otra vez33

mov dl,table[bx]

mov si,bx

jmp otra vez33

out13:

mov tabla1[di],dl

mov tabla[si],0

empujar di

empujar si

mov cl,3

mov bx,si

mov ax,di

shl si,cl

shl di,cl

shl bx,1

shl ax,1

agregar si,bx

agregar di,ax

chuan si,di,table2,table3

pop si

pop di

inc di

pop cx

bucle otra vez13

pop1

endm

;----- -------------------------------------------------- -- ------

espacio macro num,otra vez

push cx

push ax

mov cx,num

otra vez:

mov ah,02h

mov dl,20h

int 21h

bucle de nuevo

pop ax

pop cx

endm

;----- -------------------------------------------------- --------

laboratorio de macros xian,tab3,cou

push1

mov bh,0h

mov dh ,0

mov dl,0

mov ah,2

int 10h

lea dx,lab

mov ah,09h

int 21h

mov al,31h

mov bx,0

mov cx,cou

otra vez10:

espacio 2,a1

mov dl,al

empujar hacha

mov ah,02h

int 21h

espacio 5,a2

le dx, tab3[bx]

mov ah,09h

int 21h

div_10_p d1[si]

mov ah,02h

mov dl,10

int 21h

mov ah,02h

mov dl,13

int 21h

pop ax

inc al

inc si

agregar bx,10

bucle otra vez10

pop1

endm

;--- -------------------------------------------------- ----------

nombre_r macro cout1,cout2,cout3

push1

mov di,cout1

mov si,cout2

lea dx,na

mov ah,09h

int 21h

mov bx,0

ag:

mov ah,01h

int 21h

cmp al,13

jz out111

mov tab2[bx+di],al

inc bx

jmp ag

out111:

mov al,cout3

mov d4[si], al

pop1

endm

;------------- --------------------------------------------------

menú macro

MOV AX,datos

MOV DS,AX

limpiar

MOV AH, 09

MOV

AL, 20h

MOV BH, 0

MOV BL, 0bh;color

MOV CX, 01; cuenta

INT 10h

MOV DH,6

MOV BH,0

MOV DL,17

MOV AH,2

INT 10h

LEA DX,m1

MOV AH,09h

INT 21h

MOV DH,8

MOV BH,0

MOV DL,17

MOV AH,2

INT 10h

LEA DX,m2

MOV AH,09h

INT 21h

MOV DH,10

MOV BH,0

MOV DL,17

MOV AH,2

INT 10h

LEA DX,m3

MOV AH,09h

INT 21h

MOV DH,12

MOV BH,0

MOV DL,17

MOV AH,2

INT 10h

LEA DX,m4

MOV AH,09h

INT 21h

MOV DH,14

MOV BH,0

MOV DL,17

MOV AH,2

INT 10h

LEA DX,m5

MOV AH,09h

INT 21h

MOV DH,16

MOV BH,0

MOV DL,17

MOV AH,2

INT 10h

LEA DX,m6

MOV AH,09h

INT 21h

;-----------Arriba------------

MOV DH, 2

MOV DL, 14;Columna de inicio a la izquierda

MOV BH, 0

MOV AH, 2

INT 10h

MOV AH, 09

MOV AL, 40h

MOV BH, 0

MOV BL, 0dh

MOV CX, 53

INT 10h

;-------------Abajo---------- - --

MOV DH, 19

MOV DL, 14

MOV BH, 0

MOV AH, 2

INT 10h

MOV AH, 09

MOV AL, 40h

MOV BH, 0

MOV BL, 0dh

MOV CX, 54

INT 10h

;-----------izquierda---------- -

MOV DL, 14

MOV DH, 1

le_L:

INC DH

CMP DH, 19;Posición izquierda

JZ r_L

MOV BH, 0

MOV AH, 2

INT 10h

MOV AH, 09

MOV AL, 40h

MOV BH, 0

MOV BL, 0dh

MOV CX, 01

INT 10h

JMP le_L

r_L:

MOV DL,

67

MOV DH, 1

r_p:

INC DH

CMP DH, 19

JZ abc

MOV BH, 0

MOV AH, 2

INT 10h

MOV AH, 09

MOV AL, 40h

MOV BH, 0

MOV BL, 0dh

MOV CX, 01

INT 10h

JMP r_p

endm

otra vez: menú

abc: mov flag,1

mov ah,01h

int 21h

cmp al,'1'

jz L1

jmp abc2

L1: limpio

aleatorio1

letra fácil,cadenax,cadena

jmp aa

abc2: cmp al,'2'

jz L2

jmp abc3

L2: clean

aleatorio2

letra media,stringx,string

jmp aa

abc3: cmp al,'3'

jz L3

jmp abc4

L3: limpio

random3

letra dura,cadenax,cadena

jmp aa

abc4: cmp al,'4'

jz L4

jmp abc

L4: limpiar

jmp último

------------------- ----------sjm-----------------------

aa: MOV BH,0

MOV DH,20

MOV DL,0

MOV AH,2

INT 10h

lea dx, resultado

mov ah,09h

int 21h

mov al,count1

agregar count2,al

div_10_p cuenta2

--------------------------------sjm---------------- ----- ---

otra vez1: cmp flag,1

jz otra vez2

jm

p otra vez

otra vez2: nombre_r cuenta12,cuenta11,cuenta2

mov cuenta2,0

mov cuenta1,0

lea dx,zz

mov ah,09h

int 21h

f2: mov ah,1

int 16h

jnz f1

;-----------------

mov bx,30000

espera1: mov cx, 20000

retraso: retraso del bucle

dec bx

jnz wait1

;------------ ---------

jmp f2

f1: mov ah,01h

int 21h

cmp al, 'y'

jz outb

jmp outa

outb: agregar recuento12,10

inc recuento11

inc c

mov flag,0

jmp againn1

outa: clean

pai_xu c,d4,d1,tab2,tab3

xian lab1,tab3,c

mov ah,01h

int 21h

;---------- -------------------------------------------------- ---

último: mov ah,4ch

int 21h

código termina

fin inicio