Các câu hỏi và đáp án môn vi xử lý - Pdf 13

1. Viết chương trình
hợp ngữ dạng .EXE
nhập vào từ bàn phím 2
số nguyên 0<=a, b<=9.
Tính tổng a+b và hiển
thị kết quả ra màn
hình. Ví dụ: a=4, b=5,
tổng là: 9; a=6, b=7,
tổng là: 13.
.model small
.stack 100h
.data
x1 db 10,13, 'Nhap
a=$'
x2 db 10,13, 'Nhap
b=$'
x3 db 10,13, 'Tong
a+b= $'
.code
main proc
mov ax,@data
mov ds,ax
mov ah,9
lea dx,x1
int 21h

nhapa:
mov ah,1
int 21h
cmp al,'0'
jb nhapa

kthuc:

mov ah,4ch
int 21h

main endp
end main
2. Viết chương trình
hợp ngữ dạng .EXE
nhập vào từ bàn phím 2
số nguyên 0<=a, b<=9.
Tính hiệu a-b và hiển
thị kết quả ra màn
hình. Ví dụ: a=8, b=5,
hiệu là: 3; a=4, b=7,
hiệu là: -3.
.model small
.stack 100h
.data
x1 db 10,13, 'Nhap
a=$'
x2 db 10,13, 'Nhap
b=$'
x3 db 10,13, 'Hieu a-
b= $'
.code
main proc
mov ax,@data
mov ds,ax
mov ah,9

lonhon:
sub bl,cl
mov ah,2

mov dl,bl
int 21h

mov ah,4ch
int 21h

main endp
end main
.model tiny
.stack 100h
.data
tb1 db 'Nhap a=$'
tb2 db 10,13, 'Nhap
b=$'
tb3 db 10,13, 'Hieu 2 so
da nhap la: $'
.code
main proc
mov ah,9
lea dx,tb1
int 21h

mov ah,1
int 21h
mov bl,al


end main

3. Viết chương
trình hợp ngữ
dạng .EXE nhập vào
từ bàn phím 1 chữ số
Hecxa từ A->F (chữ
in hoa), hãy in ra
màn hình số thập
phân tương ứng.
Nếu nhập sai : Yêu
cầu nhập lại. Ví dụ :
Nhập vào A, số thập
phân tương ứng là
10.
.model tiny
.stack 100h
.data
tb1 db 10, 13,
'Nhap chu so Hecxa
(kt) = $'
tb2 db 10, 13, 'So
thap phan tuong ung
la: $'
.code
main proc
mov ax,@data
mov ds,ax

nhap: Mov ah,9

phím 1 chữ số Hecxa
từ a->f (chữ thường),
hãy in ra màn hình số
thập phân tương ứng.
Nếu nhập sai : Yêu cầu
nhập lại. Ví dụ : Nhập
vào a, số thập phân
tương ứng là 10.
.model tiny
.stack 100h
.data
tb1 db 10, 13, 'Nhap
chu so Hecxa (kt) = $'
tb2 db 10, 13, 'So
thap phan tuong ung la:
$'
.code
main proc
mov ax,@data
mov ds,ax

nhap: Mov ah,9
lea dx,tb1
int 21h
mov ah,1
int 21h

cmp al,'a'
jb nhap
cmp al,'f'

.data
debai db 10,13, 'Kiem
tra tinh chan le cua 1 ky
tu so$'
tb1 db 10,13, 'Nhap
ky tu so can kiem tra
(kt):$'
tb2 db 10,13, 'Do la
so chan$'
tb3 db 10,13, 'Do la
so le$'
tb4 db 10,13, 'Hay
nhap lai voi
(0<=kt<=9)$'
.code
main proc
mov ah,9
lea dx,debai
int 21h
mov ah,9
lea dx,tb1
int 21h

nhap:
mov ah,1
int 21h

cmp al,'0'
jb nhap
cmp al,'9'

.stack 100h
.data
x1 db 'Nhap a:$'
x2 db 'Nhap b:$'
x3 db 'Trung binh cua
a va b la:$'
x4 db '.5$'
x5 db '.0$'

.code
main proc
mov ah,9
lea dx,x1
int 21h
nhapa:
mov ah,1
int 21h
cmp al,'0'
jb nhapa
cmp al,'9'
ja nhapa
sub al,30h
mov bl,al
mov ah,9
lea dx,x2
int 21h
nhapb:
mov ah,1
int 21h



main endp
end main
7. Cho AX chứa 1
số nguyên không dấu
nằm trong phạm vi 0 ÷
65535. Viết chương
trình hợp ngữ dạng
.EXE in số đó ra màn
hình theo chiều ngược
lại. Ví dụ : AX=12345.
In ngược lại là : 54321.
.model tiny
.stack 100h
.data
;debai db 10,13, 'In
day so 12345 nguoc lai
la:$'
.code
main proc
;mov ah,9
;lea dx,debai
;int 21h

;mov ax,12345
mov bx,10
mov cx,0
lap:
xor dx,dx
div bx

.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
push ax
mov bx,0
mov cx,10
daoso:
push ax
mov ax,10
mul bx
mov bx,ax
mov dx,0
pop ax
div cx
add bx,dx
cmp ax,0
jne daoso
push ax
cmp ax,bx
je doixung
mov ah ,9
lea dx,x2
int 21h
jmp kt
doixung:
mov ah ,9
lea dx,x1
int 21h

mov ah,1
int 21h
mov bl,al

mov ah,9
lea dx,x2
int 21h

mov cx,8
mov n,0

lap:
shl bl,1
inc n
jc inso1
mov ah,2
mov dl,'0'
int 21h
jmp nhay inso1:
mov ah,2
mov dl,'1'
int 21h

nhay:
cmp n,4
jb tiep
mov ah,2

ASCII dạng Hexa)
.model small
.stack 100h
.data
x1 db 10,13, 'Nhap
mot ky tu:$'
x2 db 10,13, 'Ma
ASCII o dang Hexa la:$'
.code
main proc
mov ah,9
lea dx,x1
int 21h

mov ah,1
int 21h
mov bl,al

mov ah,9
lea dx,x2
int 21h

mov al,bl
mov cl,4
shr al,cl
cmp al,9
jbe inra
add al,7
inra:
mov dl,al

dạng thập phân là :
65d. (In ra 13d … ???)
.model small
.stack 100h
.data
x1 db 13,10, 'Nhap
mot ky tu bat ky:$'
x2 db 13,10, 'Ma ascii
cua ky tu vua nhap duoi
dang thap phan:$'
.code
main proc
mov ax,@data
mov ds,ax
nhaplai:
mov ah,9
lea dx,x1
int 21h

mov ah,1
int 21h
mov ah,7
int 21h

mov bl,al
mov ah,9
lea dx,x2
int 21h

mov cx,8

int 21h
main endp end main 12. Cho BX chứa một số
nhị phân 16bit (VD :
BX=1100 0011 1011
0110b). Viết chương
trình hợp ngữ dạng
.EXE in ra màn hình
nội dung trong thanh
ghi BX ra dạng Hexa.
(Ví dụ : Dạng hexa là :
C3B6h)
.model small
.stack 100h
.data
x1 db 'Ma hecxa:$'
.code
main proc
mov ah,9
lea dx,x1
int 21h

push bx
mov cl,12
shr bx,cl
call hien
pop bx
push bx

pop ax
pop ax
ret
hien endp
end hien

mov ah,4ch
int 21h

main endp
end main
13. Cho BX chứa một số
nhị phân 16bit (VD :
BX=1100 0011 1011
0110b). Viết chương
trình hợp ngữ dạng
.EXE in ra màn hình
nội dung trong thanh
ghi BX ra dạng thập
phân. (Ví dụ : Dạng
thập phân là : 50102d)
.model tiny
.stack 100h
.data
x1 db 'Ma thap phan:$'
.code
main proc
mov ah,9
lea dx,x1
int 21h

main endp
end main
14. Cho BX chứa 1 số
Hexa 4 chữ số (VD : BX
= A3B4h). Viết chương
trình hợp ngữ dạng
.EXE in BX ra màn
hình dạng nhị phân,
mỗi nhóm 4 bit cách
nhau 1 dấu trống. Ví
dụ : Dạng nhị phân là :
1010 0011 1011 0100b.
.model tiny
.stack 100h
.data
debai db 10,13, 'In
a3b4h sang dang nhi
phan:$'
n db ?
.code
main proc
mov ah,9
lea dx,debai
int 21h

mov bx,0a3b4h
mov cx,16
mov ah,2
mov n,0


Hexa 4 chữ số (VD : BX
= A3B4h). Viết chương
trình hợp ngữ dạng
.EXE in BX ra màn
hình dạng thập phân.
Ví dụ : Dạng thập phân
là : 41908d.
16. Cho AX chứa 1 số
nguyên có dấu nằm
trong phạm vi -32768 ÷
32767. Viết chương
trình hợp ngữ dạng
.EXE in AX ra màn
hình ở dạng thập phân.
Ví dụ : AX = 1234, In ra
AX =1234, AX= - 1234.
In ra : AX= -1234.
.model tiny
.stack 100h
.data
x1 db 10,30, 'Xau
trong AX la:$'
.code
main proc
mov ah,9
lea dx,x1
int 21h

mov ax,-12345 ;hay
ax=12345

mov ah,4ch
int 21h

main endp
end main
17. Cho một xâu ký tự
S, viết chương trình
hợp ngữ dạng .EXE tạo
ra xâu S1 là xâu đảo
ngược của xâu S và in
xâu S1 ra màn hình.
.model small
.stack 100h
.data
s db 80 dup(?)
s1 db 80 dup(?)
x1 db "Xau dao cua S
la:$"
.code
main proc
mov ax, @data
mov ds,ax
mov es,ax
mov cx,0
lea si,s
cld
lap:
lodsb
cmp al,'$'
je tiep

xâu S2 có bằng nhau
không? Hiển thị kết quả
ra màn hình.
.model small
.stack 100h
.data
tb1 db 'Xau S1 bang
S2$'
tb2 db 'Xau S1khong
bang S2$'
s1 db 'duch$'
s2 db 'duch$'
.code
main proc
mov ax,@data
mov ds,ax
mov es,ax

mov cx,0
lea si,s1
cld
dems1:
lodsb
cmp al,'$'
je tiep
inc cx
jmp dems1

tiep:
mov dx,0


main endp
end main
19. Cho xâu ký tự S,
viết chương trình hợp
ngữ dạng .EXE kiểm
tra xem xâu S có phải là
xâu đối xứng hay
không? Hiển thị kết quả
ra màn hình.
.model small
.stack 100h
.data
s db 'AbbA$'
s1 db 80 dup(?)
x1 db 13,10, 'xau doi
xung$'
x2 db 13,10, 'khong
doi xung$'

.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
mov cx,0
lea si,s
cld
cuoixau:
lodsb


kdx:
mov ah,9
lea dx,x2
int 21h ketthuc:
mov ah,4ch
int 21h

main endp
end main

20. Cho xâu ký tự S,
viết chương trình hợp
ngữ dạng .EXE đếm số
ký tự là chữ số có trong
S. Hiển thị kết quả ra
màn hình.
.model small
.stack 100h
.data
s db 'ha noi2013$'
x1 db 13,10, 'So ky tu
la chu so trong xau=$'

.code
main proc
mov ax,@data

;mov bx,10

chia:
xor dx,dx
div bx
push dx
inc cx
cmp ax,0
jne chia
mov ah,2

hthi:
pop dx
add dx,30h
int 21h
loop hthi

mov ah,4ch
int 21h

main endp
end main 21. Cho xâu ký tự S,
viết chương trình hợp
ngữ dạng .EXE nhập từ
bàn phím một ký tự ch
và kiểm tra xem ch có
trong xâu S hay không?


mov ah,1
int 21h
mov bl,al
lea si,s
cld

lap:
lodsb
cmp al,bl
je kq1
cmp al,'$'
je kq2
jmp lap
kq1:
lea dx,x3
mov ah,9
int 21h

lea dx,x4
mov ah,9
int 21h

mov ax,si
mov bx,10
mov cx,0

chia:
xor dx,dx
div bx

.model small
.stack 100h
.data
s db 'ha noi2013$'
x1 db 13,10, 'So ky tu
la chu so trong xau=$'

.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
mov cx,0
lea si,s
cld
dem:
lodsb
cmp al,'$'
je inra
cmp al,'a'
jb dem
cmp al,'z'
ja dem

inc cx
jmp dem
inra:
lea dx,x1
mov ah,9
int 21h

main endp
end main
23. Cho xâu ký tự S, viết
chương trình hợp ngữ
dạng .EXE tính tổng của
các ký tự số có trong xâu
S và lưu kết quả vào
thanh ghi BX.
.model small
.stack 100h
.data
s db 'ha noi2013&'
x1 db 13,10, 'So ky tu la
chu so trong xau=$'

.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
mov cx,0
mov bx,0
lea si,s
cld
dem:
lodsb
cmp al,'$'

add dx,30h
int 21h
loop hthi

mov ah,4ch
int 21h

main endp
end main
24. Cho 2 xâu ký tự S1
và S2, viết chương
trình hợp ngữ dạng
.EXE so sánh hai xâu
S1 và S2. Hiển thị kết
quả so sánh ra màn
hình.
.model small
.stack 100h
.data
x3 db 'S1=S2$'
x4 db 'S1>S2$'
x5 db 'S1<S2$'
l1 dw ?
l2 dw ?
s1 db ‘abc$'
s2 db 'abc$'
.code
main proc
mov ax,@data
mov ds,ax

tiep:
lea si,s1
lea di,s2
cld
repe cmpsb

mov cx,0
je kq1

sub si,1
lodsb
mov bl,al
sub si,1
mov ax,si
lea si,s2

add si,ax
lodsb
cmp bl,al
ja s1lh
lea dx, x5
mov ah,9
int 21h
jmp kt
s1lh:
lea dx, x4
mov ah,9
int 21h
jmp kt
kq1:

.model small
.stack 100h
.data
x1 db 'Xau so khi noi
la:$'
s1 db 'abc$'
s2 db 'abc$'
.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
mov cx,0
lea si,s1
cld
tim:
lodsb
cmp ah,'$'
jne tim

mov di,si
sub di,1
lea si,s2
cld
noixau:
lodsb
cmp al,'$'
je inxau
stosb
jmp noixau

x3 db 10,13,' ky tu sau
khi da chen la:$'
s1 db 'duc hanh$'
s db ?
.code
main proc
nhapk proc
push ax
push dx
nhaplai:
mov bx,0
_nhap:
mov ah,1
int 21h
cmp al,0dh
je _nhap ;je _ktnhap
and ax,000fh
push ax
mov ax,10
mul bx
cmp dx,0
jne nhaplai
cmp ax,cx
ja nhaplai
pop bx
add bx,ax
jc nhaplai
cmp bx,cx
ja nhaplai
jmp _nhap

jbe nhap
cmp ax,cx
ja nhap
call nhapk
mov k,bx
mov ah,9
lea dx,x1
int 21h

mov ah,1
int 21h
mov bl,al
sub cx,1
mov di,l
mov si,l
std
daykytu:
lodsb
stosb
cmp si,k
jae daykytu
mov al,bl
stosb
mov ah,9
lea dx,x3
int 21h
lea dx,s
int 21h
mov ah,4ch
int 21h


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status