LOOP ( . LOOP ), LOOPZ ( . LOOP while Zero ) LOOPNZ ( . Loop while Not Zero ), CX. .9.6.
. 9.6.
LOOP CX :
> 0, ;
CX = 0, LOOP .
LOOPZ CX , ZF:
> 0 ZF = 1, ;
CX = 0 ZF = 0, LOOPZ .
LOOPNZ CX , ZF:
> 0 ZF = 0, ;
CX = 0 ZF = 1, LOOPNZ .
, :
MOV CX,10;
m1: MOV AX,12
LOOP m1;
, LOOP, LOOPZ LOOPPNZ ( 128+127 ).
( ), :
MOV CX,30;
cykl_1:
PUSH CX
MOV CX,5;
cykl_2:
LOOP cykl_2
POP CX
LOOP cykl_1
COM-, () (). ASCII .4.2. 61H7AH, 41H5AH. , , 61H7AH, .
, ASCII :
A = 41H = 01000001B,
a = 61H = 01100001B,
Z = 5AH =01011010B,
z = 7AH = 01111010B.
, , , . , , AND.
.9.7.
codesg SEGMENT PARA 'Code'
ASSUME CS:codesg,DS:codesg,SS:codesg,ES:nothing
ORG 100H
begin: JMP main
;-----------------------------------------------------
pole DB 'Hsd1fAbcVVxX4'
len=$-pole;
;-----------------------------------------------------
main PROC NEAR
MOV CX,len;
LEA BX,pole; BX
|
|
m1: MOV AL,byte ptr [BX];
CMP AL,61H
JB next
CMP AL,7AH
JA next
AND AL,11011111B;
MOV byte ptr [BX],AL;
next: INC BX;
LOOP m1
MOV AX,4C00H; RET
INT 21H
main ENDP
codesg ENDS
END begin
. 9.7.
1. m1?
MOV AL,35H
CMP AL,10110011B
JA m1
2. m1?
MOV AL,-35D
CMP AL,10111001B
JL m1
3. m1?
MOV AL,FEH
AND AL,00H
JZ m1
4. ?
MOV AX,5
MOV CX,4
m1: ADD AX,2
INC CX
LOOP m1
5. BL ?
MOV BL,0
MOV CX,10
m2: INC BL
INC BL
m1: INC BL
LOOP m1
LOOP m2
6. COM-, () ().
7. COM, .