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 p>
;-----------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 p>
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> 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 p>
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 p>
endm
;------------------------------------
div_10_p macro num
push1
mov al,num
cbw
mov cl,10 p>
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 p>
cmp dl,table[bx]
jge otra vez33
mov dl,table[bx]
mov si,bx p>
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 p>
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 p>
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 p>
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