Tải bản đầy đủ (.pdf) (34 trang)

Bài tập ASM tổng hợp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (147.75 KB, 34 trang )

BÀI TẬP ASM TỔNG HỢP

Bài 1. 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 và
in ra xâu tách được.

include mylib.mac
code segment
assume cs:code
org 100h
;
start:jmp over
xau db 40 dup('?')
ten db 10 dup('$')
over:
@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
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
;
thoat:
int 20h
include proc.asm
code ends
end start


Bài 2. Tách họ (được sử dụng thư viện)

include mylib.mac
code segment
assume cs:code
org 100h
;
start:jmp over
xau db 50 dup(?)
ho db 30 dup('$')
over:
@write'Nhap xau ho va ten:'
lea 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:
int 20h
include proc.asm
code ends
end start

Bài 3. Tách tên đệm (được sử dụng thư viện)

include mylib.mac
code segment
assume cs:code

org 100h
;
start:jmp over
xau db 50 dup(?)
tendem db 20 dup('$')
over:
@write'Nhap xau ho va ten'
lea di,xau
cld
xor bx,bx
nhap:
mov 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
sub 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
;
thoat:
int 20h
include proc.asm
code ends
end start

Bài 4.
code segment
assume cs:code
org 100h
;
start:jmp over
tb1 db 10,13,'Nhap so co 1 chu so:$'
tb2 db 10,13,'thuong la:$'
tb3 db 10,13,'du la:$'
thuong db 0
du db 0

over:
mov ah,9
lea dx,tb1
int 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
end start

Bài 5.
code segment
assume cs:code
org 100h
;
start:jmp over
tb1 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
lea dx,tb2
int 21h
sub bl,31h
mov ah,2
mov dl,bl
int 21h
;
thoat:
int 20h
code ends
end start

Bài 6.

code segment
assume cs:code
org 100h
;
start:jmp over
tb1 db 'NHap 1 ky tu:$'
tb2 db 10,13,'la chu so$'
tb3 db 10,13,'la chu hoa$'
tb4 db 10,13,'la chu thuong$'
over:
mov ah,9
lea dx,tb1
int 21h
mov ah,1
int 21h
cmp al,'0'
jb over
cmp al,'9'
ja nhay
mov ah,9
lea dx,tb2
int 21h
jmp thoat
nhay:
cmp al,65
jb over
cmp al,90
ja nhay1
mov ah,9
lea dx,tb3

int 21h
jmp thoat
nhay1:
cmp al,97
jb over
cmp al,122
ja over
mov ah,9
lea dx,tb4
int 21h
;
thoat:
int 20h
code ends
end start

Bài 7.
code segment
assume cs:code
org 100h
;
start:jmp over
tb1 db 'Bang ma asci mo rong la :',10,13,'$'
tb2 db ' ','$'
tb3 db 10,13,'$'
over:
mov ah,9
lea dx,tb1
int 21h
mov cx,128

mov bl,128
mov 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:
loop inra
;
thoat:
int 20h
code ends
end start

Bài 8.

code segment
assume cs:code
org 100h

;
start:jmp over
tb1 db 10,13,'Nhap so co 1 chu so:$'
tb2 db 10,13,'Do la so chan$'
tb3 db 10,13,'DO la so le$'
over:
mov ah,9
lea dx,tb1
int 21h
mov 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
;
thoat:
int 20h

code ends
end start

Bài 9.
code segment
assume cs:code
org 100h
;
start:jmp over
tb1 db 'nhap a=$'
tb2 db 10,13,'nhap b=$'
tb3 db 10,13,'trung binh cong cua hai so do la:$'
over:
mov ah,9
lea dx,tb1
int 21h
mov 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
code ends
end start

Bài 10.
code segment
assume cs:code
org 100h

;
start:jmp over
tb1 db 'Nhap ky tu 1:$'
tb2 db 10,13,'Nhap ky tu 2:$'
tb3 db 10,13,'Sau khi sap xep la:$'
over:
mov ah,9
lea dx,tb1
int 21h
mov ah,1
int 21h
mov bl,al
mov ah,9
lea dx,tb2
int 21h
mov ah,1
int 21h
mov cl,al
mov ah,9
lea dx,tb3
int 21h
;
cmp bl,cl
ja nhay
inra:
mov ah,2
mov dl,bl
int 21h
mov ah,2
mov dl,cl

int 21h
jmp thoat
nhay:
xchg bl,cl
jmp inra
;
thoat:
int 20h
code ends
end start

Bài 11.
code segment
assume cs:code
org 100h
;
start:jmp over
tb1 db 10,13,'Nhap 1<=N<=5 :$'
tb2 db 10,13,'tong tu 1 den N la:$'
tong db 0
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
jmp 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
;

thoat:
int 20h
code ends
end start

Bài 12.
;bieu dien ma asci cua 1 ky tu o dang nhi phan va hecxa
; Copyright By : le xuan chien 47k-tin
code segment
assume cs:code
org 100h
;
start:jmp over
tb1 db 'Nhap 1 ky tu :$'
tb2 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
day:
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
chu_cai:
add dl,37h;Vi 37h chinh la 55.Nhu vay muon in ra
chu cai ta phai cong them 55 nua
qua:
int 21h
loop lap1
mov ah,2
mov dl,'h'
int 21h
;
thoat:
int 20h
code ends
end start

Bài 13.
Code Segment
Assume cs: Code
Org 100h
Start: jmp over
x1 db 'Nhap so nhi phan $'
x2 db 10, 13, 'Chu so co nghia la 1$'
over:
mov ah,9
lea dx,x1
int 21h
xor 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
jmp nhaptiep
thoat:
;
mov ah,9
lea dx,x2
int 21h
;
mov cx,16;so lan lap
;
lap: shl bx,1;day trai 1 bit
dec cx
jc inso;neu do la so 1 thi in ra
jmp lap;day chinh la doan bo qua nhung so khong co nghia
;
inso: mov ah,2
lap2: shl bx,1
jc inso1
mov dl,'0'
jmp inra
inso1: mov dl,'1'
inra: int 21h
loop lap2
;

int 20h
Code Ends
End Start

Bà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
và in ra xâu tách được.

include mylib.mac
code segment
assume cs:code
org 100h
;
start:jmp over
xau db 40 dup('?')
ten db 10 dup('$')
over:
@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
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
;
thoat:
int 20h
include proc.asm

code ends
end start

Bài 15. Xâu đối xứng (được sử dụng thư viện).
include mylib.mac
code segment
assume cs:code
org 100h
;
start:jmp over
xau db 50 dup(?)
xaudao db 50 dup(?)
over:
@write'Nhap xau:$'
lea di,xau
cld
xor bx,bx
nhap:
mov 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
je doixung
@xuong_dong
@write'Xau do khong doi xung'
jmp thoat
doixung:
@xuong_dong
@write'Xau do doi xung'
;
thoat:
int 20h
include proc.asm
code ends
end start

Bài 16. Đếm từ của xâu (được sử dụng thư viện)
include mylib.mac
code segment
assume cs:code
org 100h
;
start:jmp over
xau db 50 dup(?)
d dw 0

over:
@write'Nhap xau :'
mov cx,0
lea 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:
@xuong_dong
@write'so tu cua xau la:'
mov ax,d
call in_so
;
thoat:

int 20h
include proc.asm
code ends
end start

Bài 17. Chuyển các ký tự sang xâu (sử dụng lib).
include mylib.mac
code segment
assume cs:code
org 100h
;
start:jmp over
xau db 50 dup('$')
xauhoa db 50 dup('$')
over:
@write'nhap xau ky tu:'
mov bx,0
lea di,xau
mov cx,0
cld
nhap:
mov 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:
inc 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
;
thoat:
int 20h
include proc.asm
code ends
end start

Bài 18. Viết chương trình trong chế độ văn bản thực hiện: Xóa
màn hình, đặt con trỏ vào giữa màn hình, ần INSERT liên tục để

thay đổi kích thước con trỏ to, nhỏ. Thoát bằng ESC.

code segment
assume cs:code
org 100h
;
start:jmp over
over:
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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×