Bài tập lập trình emu8086 có lời giải năm 2024

Cái này thì mình biết tí chút tại vì đang học mà. cái của mình là chương trình dịch ra .exe còn ra .com làm sao thì mình không biết vì thầy giáo bảo không cần học cái đó. Cái này mình đã test thử rồi chạy ngon. Giá như là Visual Basic thì nhanh quá.

Bài làm:

.model small .stack 100h .data msg1 db 'nhap vao mot ky tu so:$' msg2 db 13,10,'$' msg3 db 'ban da nhap sai!$' a db ? .code main proc mov ax,@data mov ds,ax ;hien thi msg1 lap: mov ah,9 lea dx,msg1 int 21h ;nhap vao mov ah,1 int 21h mov a,al ;do ax co the bi thay doi do lenh xuong dong ;xuong dong_msg2 mov ah,9 lea dx,msg2 int 21h ;kiem tra cmp a,30h jl tb cmp a,39h jg tb jmp thoat ;hien thi msg3 tb: mov ah,9 lea dx,msg3 int 21h ;xuong dong_msg2 lea dx,msg2 int 21h jmp lap ;hien thi ky tu so thoat: mov ah,2 mov dl,a int 21h ;tro ve dos mov ah,4ch int 21h main endp end main

[=========> Bổ sung bài viết <=========]

.model small .stack 100h .data msg1 db 'nhap vao mot ky tu so va mot ky tu hoa thuong:$' msg2 db 'nhap vao mot ky tu so $' msg3 db 'nhap vao mot ky tu hoa thuong:$' msg4 db 13,10,'$' msg5 db 'ban da nhap sai!$' a db ? b db ? .code main proc mov ax,@data mov ds,ax

;hien thi msg1 mov ah,9 lea dx,msg1 int 21h ;xuong dong_msg4 mov ah,9 lea dx,msg4 int 21h ;nhap vao ky tu so ;hien thi msg2 lap1: mov ah,9 lea dx,msg2 int 21h mov ah,1 int 21h mov a,al ;do ax co the bi thay doi boi lenh xuong dong ;xuong dong_msg4 mov ah,9 lea dx,msg4 int 21h cmp a,30h jl tb1 cmp a,39h jg tb1 jmp thoat1 ;hien thi msg5 tb1: mov ah,9 lea dx,msg5 int 21h ;xuong dong_msg4 lea dx,msg4 int 21h jmp lap1 ;hien thi ky tu so thoat1: mov ah,2 mov dl,a int 21h

;xuong dong_msg4 mov ah,9 lea dx,msg4 int 21h

;nhap vao ky tu hoa thuong ;hien thi msg3 lap2: mov ah,9 lea dx,msg3 int 21h mov ah,1 int 21h xor bx,bx mov b,al ;do ax co the bi thay doi boi lenh xuong dong ;xuong dong_msg4 mov ah,9 lea dx,msg4 int 21h ;kiem tra cmp b,61H jl tb2 cmp b,7AH jg tb2 jmp thoat2

;hien thi msg5 tb2: mov ah,9 lea dx,msg5 int 21h ;xuong dong_msg4 lea dx,msg4 int 21h jmp lap2 ;hien thi ky tu so thoat2: mov ah,2 mov dl,b int 21h ;tro ve dos mov ah,4ch int 21h main endp end main

[=========> Bổ sung bài viết <=========]

bài 3 này thì quá dễ

.model small .stack 100h .data msg1 db 'nhap so thu nhat: $' msg2 db 13,10,'nhap so thu 2: $' msg3 db 13,10,'so lon nhat trong 2 so la: $' .code main proc mov ax,@data mov ds,ax ;nhap so thu nhat mov ah,9 lea dx,msg1 int 21h ;nhap vao mov ah,1 int 21h and al,0fh xor cx,cx mov cl,al ;nhap so thu hai mov ah,9 lea dx,msg2 int 21h ;nhap vao mov ah,1 int 21h and al,0fh xor bx,bx mov bl,al ;hien thi so lon nhat mov ah,9 lea dx,msg3 int 21h ;so sanh cmp bl,cl jg ht1 ;lon hon jl ht2 ;nho hon ht1: add bl,30h mov ah,2 mov dl,bl int 21h jmp thoat ht2: add cl,30h mov ah,2 mov dl,cl int 21h thoat: ;tro ve dos mov ah,4ch int 21h main endp end main

[=========> Bổ sung bài viết <=========]

bài 4 thì tương tự như trên thay đổi máy dòng lệnh thôi

[=========> Bổ sung bài viết <=========]

bài 5 và 6 tương tự như nhau chỉ khác ở câu lệnh lặp là repeat .. until và while .. do

.model small .stack 100h .data msg1 db 'nhap vao mot chu cai in thuong: $' msg2 db 13,10,'chu in thuong tu a den $' msg3 db 'la: $' msg4 db 13,10,'$' msg5 db ' $' k db ? .code main proc mov ax,@data mov ds,ax ;hien thi msg1 mov ah,9 lea dx,msg1 int 21h ;nhap vao mov ah,1 int 21h mov k,al xor bx,bx mov bl,60h ;hien thi msg2 va msg3 mov ah,9 lea dx,msg2 int 21h mov ah,2 mov dl,k int 21h mov ah,9 lea dx,msg3 int 21h ;xuong dong lea dx,msg4 int 21h lap: inc bl mov ah,2 mov dl,bl int 21h mov ah,9 lea dx,msg5 int 21h cmp bl,k je thoi jmp lap thoi: ;tro ve dos mov ah,4ch int 21h main endp end main