3
Bài 1: In ra màn hình 255 ký tự mở rộng có trong bảng mã ASCII Giải code segment assume cs:code, ds:code org 100h begin: mov cx, 255 mov al,0 lap: mov ah,2 mov dl,al inc dl int 21h loop lap mov ax, 4c00h int 21h code ends end begin Bà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. Giải code segment assume cs:code, ds:code org 100h begin: mov ah,1 int 21h 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 thoat: mov ax, 4c00h int 21h code ends end begin Bài 3: Viết chương trình nhập vào từ bàn phím nếu ký tự không nằm trong khoảng từ "A" lớn đến "Z" lớn thì thoát khỏi chương trình. Giải code segment assume cs:code, ds:code org 100h begin: mov ah,1 int 21h mov bl,al 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 ja thoat jmp begin thoat: mov ax, 4c00h int 21h code ends end begin Bài 4: Viết chương trình in ra hình trái tim mầu đỏ nền đen ở tâm màn hình. Giải: code segment assume cs:code, ds:code org 100h begin: mov ax, 0b800h mov ds, ax mov al,3 mov ah,00000100b d=12 c=40 mov si,(d*80+c)*2 mov [si],ax mov ax, 4c00h int 21h

Baitap Assembly

Embed Size (px)

Citation preview

Page 1: Baitap Assembly

Bài 1: In ra màn hình 255 ký tự mở rộng có trong bảng mã ASCIIGiảicode segmentassume cs:code, ds:codeorg 100hbegin:mov cx, 255mov al,0lap:mov ah,2mov dl,alinc dlint 21hloop lapmov ax, 4c00hint 21hcode endsend begin

Bà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.Giải

code segmentassume cs:code, ds:codeorg 100hbegin:mov ah,1int 21hcmp al,27 ;so sanh ky tu nhap vao voi ky tu 27 la ma ESCje thoat  ;neu la ma ESC thi thoat khoi chuong trinhjmp begin ;neu khac ma ESC thi quay lai tu dauthoat:mov ax, 4c00hint 21hcode endsend begin

Bài 3: Viết chương trình nhập vào từ bàn phím nếu ký tự không nằm trong khoảng từ "A" lớn đến "Z" lớn thì thoát khỏi chương trình.Giải

code segmentassume cs:code, ds:codeorg 100hbegin:mov ah,1int 21hmov bl,alcmp 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 trinhja thoatjmp beginthoat:mov ax, 4c00hint 21hcode endsend begin

Bài 4: Viết chương trình in ra hình trái tim mầu đỏ nền đen ở tâm màn hình.Giải:

code segmentassume cs:code, ds:codeorg 100hbegin:mov ax, 0b800hmov ds, axmov al,3mov ah,00000100bd=12c=40mov si,(d*80+c)*2mov [si],axmov ax, 4c00hint 21hcode endsend begin

Bài 5: Viết chương trình in ra màn hình trái tim mầu đỏ nền đen và dùng các phím (t,r,,u,d) để điều khiển trái tim dịch sang(trái, phải, trên, dưới) Giải:

code segmentassume cs:code, ds:codeorg 100hbegin:mov ax, 0b800hmov ds, axmov al,3

Page 2: Baitap Assembly

mov ah,00000100bd=12c=40mov si,(d*80+c)*2mov [si],ax

lap:mov ah,7  ;nhap ky tu tu ban phim khong hien len man hinhint 21hcmp al,'l';so sanh neu dung thi thuc hien lenh traije traicmp al,'r'je phaicmp al,'u'je trencmp al,'d'je duoijmp thoat

trai:mov al,3mov ah,4mov [si],0720h      ;xoa ky tu vua dich chuyensub si,2mov [si],axjmp lap

phai:mov al,3mov ah,4mov [si],0720h      ;xoa ky tu vua dich chuyenadd si,2mov [si],axjmp lap

tren:mov al,3mov ah,4mov [si],0720h      ;xoa ky tu vua dich chuyensub si,160mov [si],axjmp lap

duoi:mov al,3mov ah,4mov [si],0720h      ;xoa ky tu vua dich chuyenadd si,160mov [si],axjmp lap

thoat:mov ax, 4c00hint 21hcode endsend begin

Bài 6: Viết chương trình hiển thị dòng chữ "KHOA TIN HOC" có mầu đỏ nền đen rồi xuống dòng và đảo ngược dòng chữ đó.Giải

code segmentassume cs:code,ds:codeorg  100hbegin:        mov ax,0b800h        mov ds,ax        d=5        c=10        mov al,'K'        mov ah,65        mov di,(d*80+c)*2        mov [di],ax        mov al,'H'        mov ah,58        mov[di+2],ax

        mov al,'O'        mov ah,24        mov[di+4],ax

        mov al,'A'        mov ah,30        mov[di+6],ax        mov al,' '        mov ah,00        mov[di+8],ax        mov al,'T'        mov ah,65

Page 3: Baitap Assembly

        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        int 21h        d=5        c=10        push[di]        push[di+2]        push[di+4]        push[di+6]

        push[di+8]        push[di+10]        push[di+12]        push[di+14]        d=6        c=10        mov si,(d*80+c)*2        pop[si]        pop[si+2]        pop[si+4]        pop[si+6]        pop[si+8]        pop[si+10]        pop[si+12]        pop[si+14]

        mov ax,4c00h        int 21hcode endsend begin

To be continuous....:Giờ cũng gần sáng rồi chỉ viết tới đây thôi tối mai lại viết nốt bác nào cần gì thì cứ PM em!