Tổng hợp một số dạng bài tập lập trình ngôn ngữ ASM
Trang 2@write'Nhap xau ho va ten : '
lea di,xau ;dua con tro DI vao xau
xor bx,bx ;khai bao bien dem do dai cua xau nhap vao
cld ;thiet lap CF=0
nhap:
mov ah,1 int 21h cmp al,0dh ;so sanh voi enter
je tachten ;neu la enter thi nhay den nhan tachten stosb ;nguoc lai se luu ky tu vua nhap vao xau inc bx ;tang bien dem do dai xau len 1
jmp nhap ;quay tro lai nhap tiep
-
; -tachten: ;qua tinh tach ten
dec di ;giam di 1 mov al,' ' ;gan al= ' ' mov cx,bx ;so lan duyet toi da std ;thiet lap CF=1 de duyet lui trong xau.Tuc la
di tu dong giam di 1 sau moi cong lap
repe scasb ;duyet trong khi con = trong
Trang 3repne scasb ;duyet trong khi con khac nhau.Neu nhu = nhau,tuc la gap dau cach thi se tang di len 2 de chi di tro vao chu cai dau tien cua xau
add di,1 ;cho DI tro vao ten mov si,di ;gan SI=DI lea di,ten ;dua con tro DI vao xau ten sub bx,cx ;lay do dai cua xau - cx.Tuc la con lai do dai cua phan ten.O day CX duox tru dan sau moi lan lap nen ta moi lay bx-cx
mov cx,bx ;cx=bx-cx.Tuc la gan so lan lap chuyen dulieu vao xau ten
cld ;thiet lap CF=0 de DI tu dong tang dan sau moi lan lap
rep movsb ;Lap chuyen du lieu vao xau ten
@xuong_dong
@write'Ten tach duoc la:' mov ah,9
lea dx,ten int 21h
Trang 4lea di,xau;dua con tro di vao dau xau ho va ten xor bx,bx;bien dem do dai xau
cld;thiet lap di tu dong tang len 1 nhap:
mov ah,1 int 21h cmp al,0dh
je tachho stosb;neu khong phai la enter thi dua vao xau inc bx;va tang bien dem do dai xau len 1
jmp nhap;quay lai nhap tiep tachho:
lea di,xau;dua con tro di ve dau xau de duuyet cld;thiet lap di tu dong tang len 1
mov al,' ';gan al=' 'de so sanh va duyet xau mov cx,bx;so lan lap toi da
repe scasb ;duyet tu dau xau khi con =nhau.tuc la dang dau cach trong
sub di,1;tuc la dua con tro di lui lai 1 vi tri de trung voi chu cai dau tien cua ho
mov si,di lea di,ho lap:
mov al,[si];dua [si] vao al cmp al,' ';so sanh voi ' '
je nhay ;neu nhu =' ' thi thoat/nguoc lai luu vao xau ho
movsb loop lap nhay:
@xuong_dong
@write'Xau ho la:' mov ah,9
lea dx,ho int 21h
; - thoat:
Trang 5mov ah,1 int 21h cmp al,0dh
je ten_dem stosb inc bx jmp nhap ten_dem:
lea di,xau cld mov al,' ' mov cx,bx repe scasb;duyet chung nao con bang nhau repne scasb;dunyet chung nao con khac nhau repe scasb
Trang 6sub di,1;dua con tro lui lai dung chu cai dau tien cua ten dem
mov si,di;gan si =vi tri hien tai cua di lea di,tendem;dua con tro di ve dau xau tendem lap:
mov al,[si]
cmp al,' '
je nhay movsb loop lap nhay:
@xuong_dong
@write'Ten dem cua nguoi do la:' mov ah,9
lea dx,tendem int 21h
Trang 7int 21h mov ah,1 int 21h cmp al,'2'
jb over cmp al,'9'
ja over sub al,30h mov bl,19 lap:
sub bl,al inc thuong cmp bl,al jae nhay jmp qua nhay:
jmp lap qua:
mov ah,9 lea dx,tb2 int 21h mov cl,thuong add cl,30h mov ah,2 mov dl,cl int 21h mov ah,9 lea dx,tb3 int 21h add bl,30h mov ah,2 mov dl,bl int 21h
; -
thoat:
int 20h
code ends
Trang 8tb1 db 10,13,'Nhap 1 chu so hecxa:$'
tb2 db 10,13,'So thap phan tuong ung la: 1$' over:
mov ah,9 lea dx,tb1 int 21h mov ah,1 int 21h mov bl,al cmp bl,'A'
jb over cmp bl,'F' jbe nhay cmp bl,'a'
jb over cmp bl,'f'
ja over jmp nhay1 nhay:
mov ah,9 lea dx,tb2 int 21h sub bl,11h mov ah,2 mov dl,bl int 21h jmp thoat nhay1:
mov ah,9
Trang 9lea dx,tb2 int 21h sub bl,31h mov ah,2 mov dl,bl int 21h
Trang 11mov bh,0 inra:
mov ah,2 mov dl,bl int 21h mov ah,9 lea dx,tb2 int 21h inc bl inc bh cmp bh,10
jb nhay
mov bh,0 mov ah,9 lea dx,tb3 int 21h nhay:
Trang 12mov ah,1 int 21h mov bl,al sub bl,30h cmp bl,0
je over cmp bl,9
ja over shr bl,1
jc sole mov ah,9 lea dx,tb2 int 21h jmp thoat sole:
mov ah,9 lea dx,tb3 int 21h
Trang 13mov ah,1 int 21h mov bl,al sub bl,30h mov ah,9 lea dx,tb2 int 21h mov ah,1 int 21h mov cl,al sub cl,30h mov ah,9 lea dx,tb3 int 21h add bl,cl shr bl,1
jc nhay;neu so day ra la so 1 thi chung to tong la 1 so le.nguoc lai tong la 1 so chan
add bl,30h mov ah,2 mov dl,bl int 21h jmp thoat nhay:
add bl,30h mov ah,2 mov dl,bl int 21h mov ah,2 mov dl,'.' int 21h mov ah,2 mov dl,'5' int 21h
; -
thoat:
int 20h
Trang 15int 21h
jmp thoat
nhay:
xchg bl,cl jmp inra
over:
mov ah,9 lea dx,tb1 int 21h mov ah,1 int 21h cmp al,'1'
jb over cmp al,'5'
ja over mov cl,1 sub al,30h tinh:
add tong,cl inc cl
cmp cl,al
ja qua1
Trang 16jmp tinh qua1:
mov ah,9 lea dx,tb2 int 21h mov bl,tong cmp bl,9
ja qua
add bl,30h;doi thanh ky tu de in ra man hinh mov ah,2
mov dl,bl int 21h jmp thoat qua:
add bl,30h;doi thanh ky tu de in ra man hinh sub bl,10
mov ah,2 mov dl,'1' int 21h mov ah,2 mov dl,bl int 21h
;bieu dien ma asci cua 1 ky tu o dang nhi phan va hecxa
; Copyright By : le xuan chien 47k-tin
Trang 17tb2 db 10,13,'Ma asci dang nhi phan la:$' tb3 db 10,13,'Ma asci dang hecxa la:$' over:
mov ah,9 lea dx,tb1 int 21h
; - mov ah,1 int 21h mov bl,al;gan so vua nhap vao bl
; - mov ah,9 lea dx,tb2 int 21h
; - mov cx,8;so lan duyet lap:
rol bl,1;lenh quay trai
jc in_1 mov ah,2 mov dl,'0' int 21h jmp nhay in_1:
mov ah,2 mov dl,'1' int 21h nhay:
loop lap mov ah,9
lea dx,tb3 int 21h
; - mov ah,2;chuc nang in 1 ky tu mov cx,2;so lan lap in 2 chu so hecxa lap1:
xor dx,dx;tuc la dh=0 va dl=0
Trang 18day:
shl bl,1;dich trai 1 bit rcl dl,1;quay trai 1 bit inc dh;tang dh len 1 cmp dh,4;neu chua du 4 bit thi day tiep
jb day;neu du roi thi ra khoi vong lap DAY cmp dl,9;kiem tra xem 4 bit duoc day ra co gia tri =?
ja chu_cai;neu nhu >9 thi ta phai in chu cai.tuc la so hecxa
add dl,30h;neu nhu <=9 thi in chu so jmp qua
Trang 19xor bx,bx;khoi tao 1 thanh ghi trong de chua so nhap vao mov ah,1
nhaptiep:
int 21h
cmp al,0dh
je thoat ;dung thi nhap xong
sub al,30h ;doi ra so
shl bx,1;day trai 1 bit de lay cho cho so vua nhap vao
or bl,al ;cong so moi nhap
; -
int 20h
Code Ends
End Start
Trang 20Bài 14 Nhập xâu chứa họ và tên đầy đủ của 1 người gồm :HO, ten dem, ten Hãy tách tên, họ, tên đệm người đó vào 1 xâu khác
@write'Nhap xau ho va ten : '
lea di,xau ;dua con tro DI vao xau
xor bx,bx ;khai bao bien dem do dai cua xau nhap vao
cld ;thiet lap CF=0
nhap:
mov ah,1 int 21h cmp al,0dh ;so sanh voi enter
je tachten ;neu la enter thi nhay den nhan tachten stosb ;nguoc lai se luu ky tu vua nhap vao xau inc bx ;tang bien dem do dai xau len 1
jmp nhap ;quay tro lai nhap tiep
-
; -tachten: ;qua tinh tach ten
dec di ;giam di 1 mov al,' ' ;gan al= ' ' mov cx,bx ;so lan duyet toi da std ;thiet lap CF=1 de duyet lui trong xau.Tuc la
di tu dong giam di 1 sau moi cong lap
repe scasb ;duyet trong khi con = trong repne scasb ;duyet trong khi con khac nhau.Neu nhu = nhau,tuc la gap dau cach thi se tang di len 2 de chi di tro vao chu cai dau tien cua xau
Trang 21add di,1 ;cho DI tro vao ten mov si,di ;gan SI=DI lea di,ten ;dua con tro DI vao xau ten sub bx,cx ;lay do dai cua xau - cx.Tuc la con lai do dai cua phan ten.O day CX duox tru dan sau moi lan lap nen ta moi lay bx-cx
mov cx,bx ;cx=bx-cx.Tuc la gan so lan lap chuyen dulieu vao xau ten
cld ;thiet lap CF=0 de DI tu dong tang dan sau moi lan lap
rep movsb ;Lap chuyen du lieu vao xau ten
@xuong_dong
@write'Ten tach duoc la:' mov ah,9
lea dx,ten int 21h
cld xor bx,bx nhap:
Trang 22mov ah,1 int 21h cmp al,0dh
je thongbao stosb
push ax;tuc la ta phai dua ky tu nhap vao stack inc bx
jmp nhap thongbao:
lea di,xaudao mov cx,bx lap:
pop ax;lay ky tu ra tu stack stosb
loop lap lea di,xaudao lea si,xau mov cx,bx repe cmpsb
Trang 23lea di,xau cld
nhap:
mov ah,1 int 21h cmp al,0dh
je dem stosb inc cx jmp nhap dem:
mov al,' ' lea di,xau lap:
repe scasb;bo dau cach trong jcxz inkq
inc d repne scasb;bo qua tu vua dem cmp cx,0
jnz lap inkq:
Trang 24mov ah,1 int 21h cmp al,0dh
je nhay stosb inc cx jmp nhap nhay:
lea di,xauhoa cld
lap:
mov al,xau[bx]
cmp al,'A'
jb qua cmp al,'Z'
ja qua stosb qua:
Trang 25inc bx loop lap
@xuong_dong
@write'Xau ban dau la :' mov ah,9
lea dx,xau int 21h
@xuong_dong
@write'xau chu hoa la:' mov ah,9
lea dx,xauhoa int 21h
mov ax,0003h;o day AH=0,AL=3 la che do 25*80,16 mau.Che
do van ban chuan
int 10h ;xoa man hinh mov ah,2 ;dat vi tri con tro mov bh,0;so trang bat dau tu 0.Mac dinh trang cua man hinh bat dau tu trang 0
mov dh,000ch ;toa do dong mov dl,0028h ;toa do cot
Trang 26int 10h ;dat vi tri con tro lap:
mov ah,0 int 16h cmp ah,1 ;bat phim ESC thoat
je thoat mov ah,0 ;bat phim int 16h ;bat phim duoc bam cmp ah,81 ;phim INSERT
je qua mov ah,1 mov cx,0C0Dh;tra con tro ve kich thuoc ban dau int 10h
qua:
mov ah,0 int 16h cmp ah,1 ;bat phim ESC thoat
je thoat mov ah,0 ;bat phim int 16h ;bat phim duoc bam cmp ah,81
je lap mov ah,1 mov cx,000Dh;dat con tro ve kich thuoc cuc dai int 10h
Trang 27Bài 19 Lập chương trình trong chế độ văn bản thực hiện: Xóa màn hình, đặt trỏ vào giữa, phóng to con trỏ Sử dụng phím mũi tên để di chuyển con trỏ lên/xuống Khi con trỏ chạm mép màn hình thì không di chuyển nữa
; - mov ah,1;thiet lap do lon cho con tro mov cx,000Dh;do lon cuc dai cua con tro int 10h
; - lap:
mov ah,0;bat phim int 16h;ngat 16h cmp ah,1;so sanh voi ESC.Bat phim ESC
je thoat;neu da nhan ESC thi thoat ve DOS.nguoc lai se cmp ah,72;so sanh voi UP
jne down ;neu nhu khac UP thi mov ah,3;doc toa do cua con tro mov bh,0;trang 0
int 10h dec dh;giam dong cua con tro cmp dh,1
jb nhay1
Trang 28; - mov ah,2;thiet lap vi tri con tro int 10h
nhay1:
mov dh,0 jmp lap
down:
cmp ah,80 jne lap mov ah,3;doc toa do cua con tro mov bh,0;so trang
int 10h inc dh;tang dong cua con tro cmp dh,24
ja nhay
; - mov ah,2;thiet lap vi tri cua con tro int 10h
nhay:
mov dh,25 jmp lap
; - thoat:
int 20h
code ends
end start
Trang 29Bài 20 Lập chương trình trong chế độ văn bản thực hiện: Xóa màn hình, đặt trỏ vào giữa, phóng to con trỏ Sử dụng phím mũi tên để di chuyển con trỏ lên/xuống Khi con trỏ chạm mép màn hình thì không di chuyển nữa Thoát bằng phím Esc
; - mov ah,1;thiet lap do lon cho con tro mov cx,000Dh;do lon cuc dai cua con tro int 10h
; - lap:
mov ah,0;bat phim int 16h;ngat 16h cmp ah,1;so sanh voi ESC.Bat phim ESC
je thoat;neu da nhan ESC thi thoat ve DOS.nguoc lai se cmp ah,75;so sanh voi left
jne right ;neu nhu khac left thi mov ah,3;doc toa do cua con tro mov bh,0;trang 0
int 10h dec dl;giam dong cua con tro cmp dl,1
jb nhay1
Trang 30; - mov ah,2;thiet lap vi tri con tro int 10h
nhay1:
mov dl,0 jmp lap
right:
cmp ah,77 jne lap mov ah,3;doc toa do cua con tro mov bh,0;so trang
int 10h inc dl;tang dong cua con tro cmp dl,79
ja nhay
; - mov ah,2;thiet lap vi tri cua con tro int 10h
nhay:
mov dl,80 jmp lap
Bài 21 Viết chương trình sử dụng chức năng cuộn màn hình để
in 8 dải màu nền trong chế độ văn bản 16 màu
Trang 31int 10h;goi ngat 10h
; -goi chuc nang cuon man hinh mov ah,6 ;chuc nang cuon man hinh len tren
mov al,0;so dong bi cuon.O day la cuon ca cua so mov bh,0000h;thuoc tinh mau ban dau
int 10h;goi ngat 10h
; -toa do ban dau mov ch,0000h;toa do y1
mov cl,0000h;toa do x1 mov dh,0019h;toa do y2.Tuc la dong thu 25 mov dl,000Ah;toa do x2
; - lap:
add cl,10;thay doi toa do cot add dl,10;thay doi toa do dong add bh,10h;thay doi mau cua tung cua so cmp cl,70;so sanh voi chieu rong cua man hinh jbe lap ;neu nhu nho hon thi quay lai lap tiep
mov ah,0;chuc nang goi lenh bat phim
int 16h;goi ngat 16h
Trang 32mov ax,0b800h ;bo nho man hinh o che do van ban bat dau
Trang 33over:
mov ax,0013h;dat che do do hoa 256 mau int 10h
; - mov cx,0;toa do cot
mov dx,100;toa do dong mov al,0;mau ban dau cua diem thu nhat lap:
mov ah,0ch;hien thi 1 pixel int 10h;goi ngat 10h
inc cx inc al cmp cx,256;so diem anh duoc ve jbe lap
; - mov ah,0;bat phim duoc bam int 16h
; - mov ax,3h;tro lai che do van ban int 10h
tb1 db 'nhap 1 day ky tu:$'
tb2 db 10,13,'Cac chu cai in hoa va dau cach trong la: $' over:
mov ah,9 lea dx,tb1
Trang 34int 21h nhap:
mov ah,8 int 21h cmp al,27
je thoat cmp al,32
je nhay cmp al,65
jb nhap cmp al,90
ja nhap nhay:
mov ah,2 mov dl,al int 21h jmp nhap
mov ah,9 lea dx,tb2 int 21h