BÀI TẬP VỀ CÔNG NGHỆ THÔNG TIN
Trang 1Bài 1: Viết chương trình hợp ngữ dạng EXE thực hiện nhập vào từ bàn phím một ký tự, nếu không phải là ký tự số thì nhập lại Sau đó nhiển thị ký tự vừa nhập trên dòng tiếp theo.
.MODEL SMALL
STACK 100h
DATA
MoiNhap DB 'Nhap mot ky tu so n = ' , '$'
KoLaChuSo DB 'Ko phai , hay nhap lai ' , 13,10, '$'
LaChuSo DB 'Dung roi, so vua nhap la ' , 13,10, '$'
CODE
MOV AX, @Data ; Dua cac du lieu
MOV DS, AX ; vao phan doan du lieu
NhapKyTu:
MOV DX, OFFSET MoiNhap ; Xuat mot chuoi tro boi DX
MOV AH, 9 ; bang chuc nang thu 9
INT 21h ; cua ngat 21h DOS
MOV AH, 1 ; Nhap mot ky tu vao AL
INT 21h ; bang chuc nang 1 cua ngat 21h DOS
CMP AL, '0' ; Kiem tra co phai chu so hay ko
MOV AH, 2 ; Xuat mot ky tu bang
INT 21h ; chuc nang 2 cua ngat 21h DOS
MOV AH, 4Ch ; Ket thuc chuong trinh va tra
INT 21h ; ve DOS bang chuc nang 4Ch
Trang 24 Viết chương trình xuất 10 chuỗi “Hello” ra màn hình tại dòng thứ 10, cột 10.
5 Viết chương trình nhập chuỗi từ bàn phím cho đến khi nhập ký tự ‘T’ thì xuất chuỗi nhập ra màn hình và kết thúc chương trình
6 Viết chương trình thực hiện chuyển đổi một chuỗi ký tự trong bộ nhớ từ chữ
thường thành chữ hoa và in chuỗi đã chuyển đổi lên màn hình
7 Viết chương trình thực hiện in các ký tự chứa tại ô nhớ 1000h – 3000h theo thứ tự ngược lại
8 Viết chương trình thực hiện chuyển đổi số nhị phân chứa trong thanh ghi DX thành
số BCD chứa trong thanh ghi AX Nếu kết quả chuyển đổi lớn hơn 16 bit thì giá trị trong thanh ghi AX là FFFFh
9 Viết chương trình so sánh 2 arrray 8 bit A và B, mỗi array có 100 phần tử chứa từ địa chỉ 1000h (array A) và 2000h (array B) Nếu 2 array này giống nhau thì lưu vào
ô nhớ 3000h giá trị FFFFh Ngược lại thì lưu vào ô nhớ 3000h địa chỉ đầu tiên của phần tử trong array A khác với phần tử trong array B
Bài 1: In ra màn hình 255 ký tự mở rộng có trong bảng mã ASCII
Trang 3Bài 2: Nhập ký tự từ bàn phím nếu gặp phím ESC có mã là "27" thì thoát khỏi chương trình.
cmp al,27 ;so sanh ky tu nhap vao voi ky tu 27 la ma ESC
je thoat ;neu la ma ESC thi thoat khoi chuong trinh
jmp begin ;neu khac ma ESC thi quay lai tu dau
cmp bl,'A';so sanh A lon den Z lon
jb thoat ;neu khac khoang A lon den Z lon
cmp bl,'Z';thi thoat khoi chuong trinh
Trang 6mov [di],ax
mov al,'H'
mov ah,58
mov[di+2],ax mov al,'O'
mov ah,00
mov[di+8],ax mov al,'T'
mov ah,65
mov[di+10],ax mov al,'I'
mov ah,40
mov[di+12],ax mov al,'N'
mov ah,12
mov[di+14],ax mov ah,1
c=10
mov si,(d*80+c)*2 pop[si]
Trang 7thongbao1 db 'nhap chuoi, enter de ket thuc: $',10,13
thongbao2 db 13,10,'hien thi chuoi: $'
Trang 8int 10h :Ngắt làm việc của bios về màn hình
int 11h : Bios về cấu hình
int 13h :Bios về ổ đĩa
int 14h : Bios về giao diện cổng nối tiếp
int 16h : Bios liên quan đến bàn phím
Trang 9Màu :
- Địa chỉ màn hình màu : B800 : 0000
- Mỗi ký tự trên màn hình được biểu diễn bằng 2 byte
Byte thấp : chứa ký tự cần in ra
Byte cao : chứa màu nền và màu ký tự đó
Nó được định dạng như sau :
7 6 5 4 3 2 1 0
B / I : nằm ở bit thứ 7
H : nằm ở bit thứ 6
G : nằm ở bit thứ 5
B : nằm ở bit thứ 4
H, G ,B : màu nền
I : nằm ở bit thứ 3
R : nằm ở bit thứ 2
G : nằm ở bit thứ 1
B : nằm ở bit 0
I ,R ,G ,B : màu chử
I : intensity ( cường độ , độ sáng ) 0 :tối và 1 : sáng
B : blinking ( chớp nháy ) 0 : không nháy và 1 :nháy
Bit 7( B / I ) : vừa làm nhiệm vụ cho nhấp nháy chữ hay tăng giảm độ sáng cho màu nền.
I R G B MÀU I R G B MÀU
0 0 0 0 đen 1 0 0 0 đen nhạt
0 0 0 1 xanh dương 1 0 0 1 da trời
0 0 1 0 xanh lá cây 1 0 1 0 xanh nhạt
0 0 1 1 cyan 1 0 1 1 cyan sáng
0 1 0 0 đỏû 1 1 0 0 đỏ sáng
Trang 100 1 0 1 tím 1 1 0 1 tím cà
0 1 1 0 nâu 1 1 1 0 vàng
0 1 1 1 xám đậm 1 1 1 1 trắng
Cách nhớù màu :
đen xanh dương xanh lá cây cyan đỏ tím nâu xám
- Muốn chử sáng : cộng thêm số 8 cho màu chử
- Muốn nền sáng / chử nháy cộng thêm số 8 cho màu nền
CÔNG THỨC :
Màu nền * 16 + màu chữ
Ví dụ :
Chữ A có màu xanh dương trên nền đỏ
A : 65 đổi sang hệ thập phân là : 1000000
Trang 11màu xanh dương nền đỏ
Trang 12Bài 1:
.model small
.stack 100h
.Data
Msg1 db 'Nhap vao mot ki tu la so:$'
Msg2 db 'Ki tu vua nhap khong phai la so, moi ban nhap lai:$'
Msg3 db 'So ban vua nhap la:$'
Trang 13s db 'Nhap vao mot ki tu la so:$'
s1 db 'Ki tu vua nhap khong phai la so, moi ban nhap lai:$'
s2 db 'So ban vua nhap la:$'
s3 db 'Nhap vao mot chu in thuong:$'
s4 db 'Nhap sai, xin nhap lai:$'
s5 db 'Chu ban vua nhap:$'
Trang 14Mov dl,0AHint 21hMov ah,9Lea dx,s1int 21hMov ah,1Int 21htiep:
cmp al,'0'
jb Nhapsocmp al,'9'
Ja NhapsoMov bl,alMov ah,2Mov dl,0DHint 21hMov dl,0AHint 21hMov ah,9Lea dx,s2Int 21hMov ah,2Mov dl,blInt 21hMov ah,2Mov dl,0DHint 21hMov dl,0AHint 21hXor bl,blMov ah,9Lea dx,s3int 21hMov ah,1Int 21hjmp tiep1
Nhapchu:Mov ah,2Mov dl,0DHint 21hMov dl,0AHint 21h
Trang 15chao db 'Nhap vao so hexa: $'
ketqua db 'So nhi phan tuong ung la: $'
loi db 'So ban nhap khong phai hexa $'
sohexa db 100 dup(0)
Trang 16;kiem tra chuoi co hop le
mov si, offset sohexa
;goi ham taohexa, chuoi nam o SI, do dai chuoi nam trong CX mov cx, di
Trang 17jmp ketif conlai:
mov dl, 30h ketif:
mov ah, 2 int 21h
;thoat khoi dos mov ah, 4ch int 21h
kiemtrahex:
cmp ah, 61h
jb gaploi
cmp ah, 66h
Trang 18and al,0fh ;chuyen thanh so
mov n,al ;luu vao n
cmp dx,0ah ;so sanh DX voi 10
je thoat
Trang 19inc dx ;tang dx len 1
add bx,dx ;cong don vao bx
;tinh giai thua n
;luu vao bx in ra man
Trang 21end quả vào BX.
3 Viết chương trình hợp ngữ dạng EXE thực hiện nhập vào 2 số tự nhiên nhỏ hơn
10 Tìm số lớn nhất trong 2 số và in kết quả ra màn hình trên dòng tiếp theo
Trang 226 Viết chương trình hợp ngữ dạng EXE thực hiện nhập vào từ bàn phím một chữ cái
in thường ch và in ra các chữ cái in thường từ ch đến ‘z’
;Viet ct nhap vào tu bàn phím mot chu cái in thuong ch
; in ra các chu cai in thuong tu ch den ‘z’
Trang 23cmp bl,'z';so sanh xem ky tu vua nhap voi ky tu 'z'
je thoat;neu = thi nhay den thoat
;cho truoc 2 chu cai in hoa
;viet ct dem so chu cai trong doan tu ch1 den ch2 va luu vao thanh ghi bx
Trang 24mov ch1,'A';luu ky tu 'A' vao ch1
mov ch2,'E';luu ky tu 'E' vao ch2
;trong doan tu 'A' den 'E' co 3 ky tu la B C D
Trang 25int 21h
cmp al,13
je thoidoc
and al,0fh ; doi ma ra so
shl bx,1 ;dich trai bx de lay cho luu bit vua nhap
or bl,al ;chen bit vua doc vao bl
5 Viết chương trình hợp ngữ dạng EXE thực hiện nhập vào từ bàn phím một chữ cái
in thường ch và in ra các chữ cái in thường từ ‘a’ đến ch
;Viet ct nhap vào tu bàn phím mot chu cái in thuong ch
; in ra các chu cai in thuong tu 'a' den ch
Trang 26;chuyen ky tu vua nhap vao bl
cmp bl,cl;so sanh xem ky tu vua nhap voi ky tu 'a'
je thoat;neu = thi nhay den thoat
;nhap mot xau ky tu thuong
;in ra man hinh xau chu hoa
.model small
.stack 100h
.data
msg db 'Nhap vao mot chuoi: $'
msg2 db 13,10,'Chuoi vua nhap la: $'
Trang 27int 21h
lea di,chuoi
call nhapchuoi
; - lea dx,msg2
push di ;DI chua offset cua chuoi
cld ;dinh huong tien de cat
je thoi: ;neu dung thi thoi ko doc nua
cmp al,8 ;co backspace ko
jne luu
dec di ;lui con tro(di=di-1)
dec bx ;bot mot ky tu
lodsb ; chuyen ky tu vao al
mov dl,al ;dua vao dl
mov ah,2 ;hien thi
int 21h
loop for
ret
Trang 28;cho 2 so tu nhien trong 2 thanh ghi ax bx
;viet ct kiem tra so nho nhat nam trong thanh ghi nao
.model small
.stack 100h
.data
s1 db 'so nho nhat nam trong thanh thanh ghi ax $'
s2 db 'so nho nhat nam trong thanh thanh ghi bx $'
.code
main proc
mov ax,@data
mov ds,ax
mov ax,'8';gia su thanh ghi ax luu gia tri 8
mov bx,'6';gia su thanh ghi ax luu gia tri 6