Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

Bi 1:

Vit li hm C sau y bng hp ng cho 8086 (tham s ca hm truyn qua stack, gi tr tr v


lu trong thanh ghi cha)
/* Hm tnh s bit 1 ca s nguyn 2 byte */
int Count(int a)
{
int s = 0;
while (a != 0)
{
if ((a & 1) != 0)
s++;
a >>= 1;
}
return s;
}

Bi lm:
.MODEL Small
.STACK 100
.DATA
MSG1 DB Nhap so A: $
MSG2 DB 13,10,So bit 1 ca A la: $
.CODE
MAIN PROC
MOV AX,@data
MOV DS,AX

MOV AH,9
LEA DX,MSG1
INT 21H

MOV AH,1
INT 21H

MOV BX,AX
XOR SI,SI
COUNT
SHL BX
JNC NHAY
INC SI
JMP COUNT
NHAY
CMP BX,0
JE THOAT
JMP COUNT
THOAT
MOV AH,9
LEA DX,MSG2
INT 21H

MOV DX,SI
INT 21H

MOV AH,4CH
INT 21
MAIN ENDP
END MAIN

Bi 2:
Vit li hm C sau y bng hp ng cho 8086 (tham s ca hm truyn qua stack, gi tr tr
v lu trong thanh ghi cha)
/* Hm tnh tng cc s chia ht cho 4 ca mng N s nguyn 2 byte */
int Sum(int A[], int N)
{
int s = 0;
for (int i = 0; i < N; i++)
if (A[i] % 4 == 0)
s += A[i];
return s;
}

Bi lm:
.MODEL Small
.STACK 100
.DATA
A DB 10Dup(0)
MSG1 DB Nhap vao so luong N: $
MSG2 DB 13,10,Tong cua cac so chia het cho 4 la: $
.CODE
MAIN PROC
MOV AX,@data
MOV DS,AX

MOV AH,9
LEA DX,MSG1
INT 21H

MOV AH,1
INT 21H

MOV CX,AX
XOR SI,SI
MOV AH,1
NHAP
INT 21H
MOV A[SI],AX
INC SI
LOOP NHAP

MOV BX,0
XOR SI,SI
TONGN
INT 21H
XOR DX,DX
ADD DX,A[SI]
PUSH DX
INC SI
SHR DX,1
JC TONGN
SHR DX,1
JC TONGN
POP DX
ADD BX,DX
CMP SI,8
JAE THOAT
JMP TONGN
THOAT
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN

Bi 3:
Vit li hm C sau y bng hp ng cho 8086 (tham s ca hm truyn qua stack, gi tr tr v
lu trong thanh ghi cha)
/* Hm tnh tng cc ch s ca mt s cho bi xu k t */
int Sum(char A[])
{
int s = 0;
for (int i = 0; A[i] != 0; i++)
s += A[i] 48;
return s;
}

You might also like