Thứ Ba, 28 tháng 12, 2010

assembly

Câu 1: Viết chương trình nhập vào 10 ký tự sau đó hiển thị từng ký tự lên từng đầu dòng
Gợi ý:
- SV phải năm được Chế độ địa chỉ gián tiếp thanh ghi (tr 240 – Giáo trình) ở đó sử dụng thanh ghi SI để truy cập vào tứng ô nhớ và thao tác với dữ liệu trong đó
- Phải sử dụng biến để đếm 10 ký tự
- Mỗi lần nhập được 1 ký tự trừ đi biến đếm 1 giá trị và đồng thời kiểm tra giá trị biến đếm, nếu biến đếm về 0 thì kết thúc quá trình nhập.
- Khi in ký tự lại nạp lại biến đếm giá trị 10 và mỗi lần in được 1 ký tự lai xuống dòng và trừ biến đếm đi 1. khi biến đếm trở về 0 thì kết thúc.

TITLE VD1: CHUONG TRINH VI DU 1
.MODEL SMALL
.STACK 100H
.DATA
sl_lap db 10
mang_kt db '0,1,2,3,4,5,6,7,8,9'
.CODE
MAIN PROC
mov AX,@DATA
mov DS,AX
lea SI,mang_kt
;nhap 10 ky tu
mov AH,1h
nhap_kt: INT 21h
mov [SI],AL
inc SI
dec sl_lap
jnz nhap_kt
;in ky tu
mov AH,2h
lea SI,mang_kt
mov sl_lap,10
in_kt: mov DL,0Dh
int 21h
mov DL,0Ah
int 21h
mov DL,[SI]
int 21h
inc SI
dec sl_lap
jnz in_kt
mov AH,4Ch
int 21h
MAIN ENDP
END MAIN

Câu 2: Viết chương trình nhập vào 10 ký tự sau đó hiển thị thành 5 dòng mỗi dòng 2 ký tự, hai ký tự này cách nhau một ký tự trống
Gợi ý:
- Tương tự như gợi ý bài 1 tuy nhiên phải sử dụng nhiều biến đếm hơn, biến đềm để hiển thị 2 ký tự trên 1 dòng, biến đếm để đếm 5 lần mỗi lần 2 ký tự

TITLE VD1: CHUONG TRINH VI DU 2
.MODEL SMALL
.STACK 100H
.DATA
sl_lap db 10
sl_2kt db 2
sl_dong db 5
mang_kt db '0,1,2,3,4,5,6,7,8,9'
.CODE
MAIN PROC
mov AX,@DATA
mov DS,AX
lea SI,mang_kt
;nhap 10 ky tu
mov AH,1h
nhap_kt: INT 21h
mov [SI],AL
inc SI
dec sl_lap
jnz nhap_kt
mov AH,2h
;in ky tu
lea SI,mang_kt
in_kt: mov sl_2kt,2
mov DL,0Dh
int 21h
mov DL,0Ah
int 21h
kt_t2: mov DL,[SI]
int 21h
inc SI
dec sl_2kt
jz d_tiep
mov DL,20h
int 21h
loop kt_t2
d_tiep: dec sl_dong
jnz in_kt
mov AH,4Ch
int 21h
MAIN ENDP
END MAIN

Câu 3: Viết chương trình nhập vào các ký tự từ 0-9 sau đó hiển thị lên màn hình dạng như sau (có sử dụng vòng lặp để đếm và in ký tự trống):

0
1
2
3
4
5
….

TITLE VD1: CHUONG TRINH VI DU 3
.MODEL SMALL
.STACK 100H
.DATA
sl_lap db 10
s_sp db 0
mang_kt db '1,2,3,4,5,6,7,8,9,10'
.CODE
MAIN PROC
mov AX,@DATA
mov DS,AX
lea SI,mang_kt
;nhap 10 ky tu
mov AH,1h
nhap_kt: INT 21h
mov [SI],AL
inc SI
dec sl_lap
jnz nhap_kt
mov AH,2h
;in ky tu
lea SI,mang_kt
mov sl_lap,10
in_kt: inc s_sp
mov BL,s_sp
mov DL,0Dh
int 21h
mov DL,0Ah
int 21h
sp_t: dec BL
jz th_kt
mov DL,20h
int 21h
loop sp_t
th_kt: mov DL,[SI]
int 21h
inc SI
dec sl_lap
jnz in_kt
mov AH,4Ch
int 21h
MAIN ENDP
END MAIN

Bài 4. Viết chương trình nhập vào dòng chữ “chuc cac ban thanh cong!” sau đó hiển thị lên màn hình dạng như sau:
Chuc
Cac
Ban
Thanh
Cong!

TITLE VD1: CHUONG TRINH VI DU 4
.MODEL SMALL
.STACK 100H
.DATA
mang_kt db ?
.CODE
MAIN PROC
mov AX,@DATA
mov DS,AX
lea SI,mang_kt
;nhap 10 ky tu
mov AH,1h
nhap_kt: INT 21h
mov BL,AL
mov [SI],AL
sub BL,21h ; kiem tra xem co phai dau ! k?
jz kt_nh ; neu la dau ! thi nhay den kt nhap
inc SI
loop nhap_kt
kt_nh: mov AH,2h
lea SI,mang_kt
in_dt: mov DL,0Dh
int 21h
mov DL,0Ah
int 21h
in_kt_t: mov DL,[SI]
mov BL,DL
sub BL,21h
jz kt_in
mov BL,DL
sub BL,20h
jz bo_sp
int 21h
inc SI
loop in_kt_t
bo_sp: inc SI
loop in_dt
kt_in: mov AH,4Ch
int 21h
MAIN ENDP
END MAIN

Không có nhận xét nào:

Đăng nhận xét