Bài tập thực hành Assembler 6Bài 6.1.. Viết chương trình xuất ra màn hình một số dòng.. Ví dụ: De chay duoc 1 CT hop ngu ban can thuc hien cac buoc sau: Dich file ASM thanh file OBJ Lien
Trang 1Bài tập thực hành Assembler 6
Bài 6.1 Viết CT nhập vào 1 ký tự, xuất ra ký tự đó
Ví dụ:
Moi ban nhap 1 ky tu: b
Ky tu vừa nhập: b
Bài 6.2 Viết chương trình xuất ra màn hình một số dòng.
Ví dụ:
De chay duoc 1 CT hop ngu ban can thuc hien cac buoc sau:
Dich file ASM thanh file OBJ
Lien ket file OBJ thanh file EXE
Chay file EXE
Bài 6.3 Viết CT nhập vào 1 ký tự, xuất ra ký tự liền trước và liền sau.
Ví dụ:
Moi ban nhap 1 ky tu: b
Ky tu lien truoc: a
Ky tu lien sau: c
Bài 6.4 Viết CT nhập vào 1 ký tự thường In ra ký tự Hoa
Ví dụ:
Moi ban nhap 1 ky tu: b
Ky tu Hoa: B
Bài 6.5 Viết CT nhập vào 1 ký tự hoa In ra ký tự thường
Ví dụ:
Moi ban nhap 1 ky tu: B
Ky tu thường: b
Bài 6.6 Viết chương trình nhập vào 2 số nguyên dương x1, x2 (1 ≤ x2 < x1 < 9) Xuất ra kết quả các phép tính: x1-1, x1 +2, x1+x2, x1-x2
Ví dụ:
x1 = 5
x2 = 3
x1 – 1 = 4
x1 + 1 = 6
x1 + x2 = 8
x1 – x2 = 7
Bài 6.1 Viết CT nhập vào 1 ký tự, xuất ra ký tự đó
Ví dụ:
Moi ban nhap 1 ky tu: b
Ky tu vừa nhập: b
===================== Giải 6.1: ========================
.model small
.stack 100h
.data
Msg1 DB 9,10,13,"- Moi ban nhap 1 ky tu:$"
1
Trang 2Msg2 DB 9,10,13,"- Ky tu vua nhap:$"
b DB ?
.code
mov AX,@data
mov DS,AX
mov DX,OFFSET Msg1
mov AH, 9
int 21h
mov AH,1
int 21h
mov b,AL
mov DX,OFFSET Msg2
mov AH, 9
int 21h
mov DL,b
mov AH,2
int 21h
mov AH,4Ch
int 21h
end
===================== END 6.1 ========================
Bài 6.2 Viết chương trình xuất ra màn hình một số dòng.
Ví dụ:
De chay duoc 1 CT hop ngu ban can thuc hien cac buoc sau:
Dich file ASM thanh file OBJ
Lien ket file OBJ thanh file EXE
Chay file EXE
===================== Giải 6.2: ========================
.model small
.stack 100h
.data
Msg DB 10,13, "De chay duoc 1 CT hop ngu ban can thuc hien cac buoc sau:"
DB 10,13,9,"- Dich file ASM thanh file OBJ."
DB 10,13,9,"- Lien ket file OBJ thanh file EXE."
DB 10,13,9,"- Chay file EXE.$"
.code
mov AX,@data
mov DS,AX
mov DX,offset Msg
Trang 3mov AH,9
int 21h
mov AH,4Ch
int 21h
end
===================== END 6.2 ========================
Bài 6.3 Viết CT nhập vào 1 ký tự, xuất ra ký tự liền trước và liền sau.
Ví dụ:
Moi ban nhap 1 ky tu: b
Ky tu lien truoc: a
Ky tu lien sau: c
===================== Giải 6.3 ========================
.MODEL SMALL
.STACK 100H
.DATA
Msg1 DB "Nhap vao ky tu: $"
Msg2 DB "Ky tu lien truoc la: $"
Msg3 DB "Ky tu lien sau la: $"
XuongDong DB 10,13, "$"
.CODE
MOV AX, @DATA
MOV DS, AX
MOV DX, offset Msg1
MOV AH, 9
INT 21h
;nhap 1 ky tu
MOV AH, 1
INT 21h
mov BH,AL ; luu ky tu vua nhap vao BH
mov DX, offset XuongDong
mov AH, 9
int 21h
;xuat ky tu lien truoc
mov DX, offset Msg2
mov AH, 9
int 21h
mov AH,BH
DEC AH
mov DL, AH ; ky tu xuat dc luu trong DL
3
Trang 4mov AH,2
int 21h
mov DX, offset XuongDong
mov AH, 9
int 21h
;xuat ky tu lien sau
mov DX, offset Msg3
mov AH, 9
int 21h
mov AH,BH
INC AH
mov DL, AH ; ky tu xuat dc luu trong DL
mov AH,2
int 21h
mov DX, offset XuongDong
mov AH, 9
int 21h
;ket thuc chuong trinh
mov AH, 4Ch ; thoat chuong trinh
int 21h
end
===================== END 6.3 ========================
Bài 6.4 Viết CT nhập vào 1 ký tự thường In ra ký tự Hoa
Ví dụ:
Moi ban nhap 1 ky tu: b
Ky tu Hoa: B
===================== GIẢI 6.4 ========================
.Stack 100
.Data
Msg1 db 'moi ban nhap 1 ky tu: $'
Msg2 db 'Ky tu Hoa: $'
.Code
Main Proc
mov ax, @Data
mov ds, ax
mov ah, 9
lea dx, TB1
int 21h
mov ah, 1
int 21h
mov bl, al
mov ah, 2
Trang 5mov dl, 10
int 21h
mov dl, 13
int 21h
mov ah, 9
lea dx, TB2
int 21h
mov ah, 2
mov dl, bl
sub dl, 20h
int 21h
mov ah,4Ch
int 21h
Main EndP
End Main
===================== END 6.4 ========================
Bài 6.5 Viết CT nhập vào 1 ký tự hoa In ra ký tự thường
Ví dụ:
Moi ban nhap 1 ky tu: B
Ky tu thường: b
===================== Giải 6.5 ========================
.MODEL small
.STACK 100h
.DATA
Msg1 DB 13,10,"Moi ban nhap 1 ki tu: $"
Msg2 DB 13,10,"Ki tu thuong : $"
KTT DB ?
.CODE
; lay dia chi data dua vao DS
MOV AX,@data
MOV DS,AX
; xuat Msg1
MOV AH,9
MOV DX,offset Msg1
INT 21h
; nhap 1 ki tu tu ban phim va luu vao AL
MOV AH,1
INT 21h
; chuyen thanh ki tu thuong va dua vao KTT
ADD AL,20h ; hoac ADD AL,32
MOV KTT,AL
5
Trang 6; xuat Msg2 va KTT
MOV AH,9
MOV DX,offset Msg2
INT 21h
MOV AH,2
MOV DL,KTT
INT 21h
; ket thuc chuong trinh
MOV AH,4Ch
INT 21h
END
===================== END 6.5 ========================
Bài 6.6 Viết chương trình nhập vào 2 số nguyên dương x1, x2 (1 ≤ x2 < x1 < 9) Xuất ra kết quả các phép tính: x1-1, x1 +2, x1+x2, x1-x2
Ví dụ:
x1 = 5
x2 = 3
x1 – 1 = 4
x1 + 1 = 6
x1 + x2 = 8
x1 – x2 = 7
===================== Giải 6.6 ========================
.MODEL small
.STACK 100h
.DATA
Msg1 DB 13,10,"x1 = $"
Msg2 DB 13,10,"x2 = $"
KetQua1 DB 13,10,"x1 - 1 = $"
KetQua2 DB 13,10,"x1 + 1 = $"
KetQua3 DB 13,10,"x1 + x2= $"
KetQua4 DB 13,10,"x1 - x2= $"
So1 DB ?
So2 DB ?
.CODE
;Lay dia chi data dua vao DS
MOV AX,@data
MOV DS,AX
; Xuat Msg1 & nhap So1 tu ban phim
MOV AH,9
MOV DX,offset Msg1
INT 21h
MOV AH,1
Trang 7INT 21h
MOV So1,AL
; Xuat Msg2 & nhap So2 tu ban phim
MOV AH,9
MOV DX,offset Msg2
INT 21h
MOV AH,1
INT 21h
MOV So2,AL
; Chuyen ki tu thanh so
SUB So1,48
SUB So2,48
; Xuat KetQua1 va ket qua phep tinh So1 - 1
MOV AH,9
MOV DX,offset KetQua1
INT 21h
MOV BH,So1 ; Dua So1 vao thanh ghi BH
DEC BH ; Thuc hien phep tinh So1 - 1
ADD BH,48 ; Chuyen ket qua tu So sang Ky tu
MOV AH,2
MOV DL,BH
INT 21h
; Xuat KetQua2 va ket qua phep tinh So2 + 1
MOV AH,9
MOV DX,offset KetQua2
INT 21h
MOV BH,So2 ; Dua So2 vao thanh ghi BH
INC BH ; Thuc hien phep tinh So2 + 1
ADD BH,48 ; Chuyen ket qua tu So sang Ky tu
MOV AH,2
MOV DL,BH
INT 21h
; Xuat KetQua3 va ket qua phep tinh So1 + So2
MOV AH,9
MOV DX,offset KetQua3
INT 21h
MOV BH,So1 ; Dua So1 vao BH
ADD BH,So2 ; Thuc hien phep tinh So1 + So2
ADD BH,48 ; Chuyen ket qua tu So sang Ky tu
MOV AH,2
7
Trang 8MOV DL,BH
INT 21h
; Xuat KetQua4 va ket qua phep tinh So1 - So2
MOV AH,9
MOV DX,offset KetQua4
INT 21h
MOV BH,So1 ; Dua So1 vao BH
SUB BH,So2 ; Thuc hien phep tinh So1 - So2
ADD BH,48 ; Chuyen ket qua tu So sang Ky tu
MOV AH,2
MOV DL,BH
INT 21h
; ket thuc chuong trinh
MOV AH,4Ch
INT 21h
END
===================== END 6.6 ========================