Tài liệu 1 số bài tập hợp ngữ

Dancer

Thành viên Vip
Bài 1: Viết chương trình hiện ra câu "Hello Assembly"
.MODEL small
.STACK 100h
.DATA
Message db ‘Hello Assembly!$’
.CODE
ProgramStart:
Mov AX,@DATA
Mov DS,AX
Mov DX,OFFSET Message
Mov AH,9
Int 21h
Mov AH,4Ch
Int 21h
END ProgramStart

Bài 2: Viết chương trình hiện ra hai câu "Chao mung ban den voi Assembly" "Assembly that de!". Mỗi câu trên một dòng.
.MODEL small
.STACK 100h
.DATA
Tbao1 db "Chao mung ban den voi Assembly$"
Tbao2 db 0DH,0AH,"Assembly that de!$"
.CODE
ProgramStart:
Mov AX,@DATA
Mov DS,AX
;xuat thong bao 1
Lea DX,Tbao1
Mov AH,9
Int 21h
;xuat thong bao 2
Lea DX,Tbao2
Mov AH,9
Int 21h
Mov AH,4Ch
Int 21h
END ProgramStart

Bài 3: Viết chương trình yêu cầu nhập một ký tự và xuất ra màn hình ký tự vừa nhập
.model small
.stack
.data
TBao1 db "Hay nhap mot ky tu: $"
TBao2 db 0DH,0AH,"Ky tu da nhap: $"
KyTu db ?
.code
ProgramStart:
Mov ax,@data
Mov ds,ax
; nhac nhap
Lea dx, TBao1
Mov ah, 9
int 21h
; nhap 1 ky tu
Mov ah, 1
Int 21h
Mov KyTu, al
; thong bao ket qua
lea dx, TBao2
mov ah, 9
int 21h
; hien thi ky tu da nhap
Mov ah, 2
Mov dl, KyTu
Int 21h
; ve dos
Mov ah, 4Ch
Int 21h
end

Bài 4: Viết chương trình nhập vào một ký tự. Xuất ra màn hình ký tự đứng trước và ký tự đứng sau
.model small
.stack
.data
TBao1 db "Hay nhap mot ky tu: $"
TBao2 db 0DH,0AH,"Ky tu da nhap: $"
TBao3 db 0DH,0AH,"Ky tu truoc ky tu da nhap: $"
TBao4 db 0DH,0AH,"Ky tu sau ky tu da nhap: $"
KyTu db ?
.code
ProgramStart:
Mov ax,@data
Mov ds,ax
; nhac nhap
Lea dx, TBao1
Mov ah, 9
int 21h
; nhap 1 ky tu
Mov ah, 1
Int 21h
Mov KyTu, al
; thong bao ket qua
lea dx, TBao2
mov ah, 9
int 21h
; hien thi ky tu da nhap
Mov ah, 2
Mov dl, KyTu
Int 21h
; hien thi ky tu truoc ky tu nhap
lea dx, TBao3
mov ah, 9
int 21h
mov ah, 2
mov dl, KyTu
dec dl
int 21h
; hien thi ky tu sau ky tu nhap
lea dx, TBao4
mov ah, 9
int 21h
mov ah, 2
mov dl, KyTu
inc dl
int 21h
mov ah, 4Ch
int 21h
end


Bài 2: Viết chương nhập vào một ký tự. Chuyển ký tự đó sang ký tự hoa
.MODEL SMALL
.STACK 100h
.DATA
Msg1 DB 'Nhap vao ki tu thuong : $'
Msg2 DB 0Dh,0Ah,'Chuyen sang ki tu hoa la : '
Char DB ?,'$'
.CODE
Main PROC
MOV AX,@DATA
MOV DS,AX
; In ra thong bao 1
LEA DX,Msg1
MOV AH,9
INT 21h
; Nhap vao 1 ki tu thuong va doi thanh ki tu hoa
MOV AH,1
INT 21h ; Doc 1 ki tu thuong va luu vao AL
SUB AL,20h ; Doi thanh ki tu hoa
MOV Char,AL
; Hien len chu hoa
LEA DX,Msg2
MOV AH,9
INT 21h
; Ket thuc chuong trinh
MOV AH,4Ch
INT 21h
Main ENDP
END Main

Bài 3: Chuyển đổi ký tự hoa thành ký tự thường
.MODEL SMALL
.STACK 100h
.DATA
Msg1 DB 'Nhap vao ki tu hoa : $'
Msg2 DB 0Dh,0Ah,'Chuyen sang ki tu thuong la : '
Char DB ?,'$'
.CODE
Main PROC
MOV AX,@DATA
MOV DS,AX
; In ra thong bao 1
LEA DX,Msg1
MOV AH,9
INT 21h
; Nhap vao 1 ki tu hoa va doi thanh ki tu thuong
MOV AH,1
INT 21h ; Doc 1 ki tu hoa va luu vao AL
ADD AL,20h ; Doi thanh ki tu thuong
MOV Char,AL
; Hien len chu thuong
LEA DX,Msg2
MOV AH,9
INT 21h
; Ket thuc chuong trinh
MOV AH,4Ch
INT 21h
Main ENDP
END Main
nhap chuoi
data segment
tb1 db "Hay nhap vao mot chuoi ky tu: $"
tb2 db 13, 10,"chuoi vua nhap la: $"
str db 200,?,200 dup('$')
ends
stack segment
dw 128 dub(?)
ends
code segment
mov ax,data
mov ds,ax

lea dx,tb1
mov ah,09h
int 21h

mov ah,0Ah
lea dx,str
int 21h

lea DX,tb2
mov ah,09h
int 21h

lea bx,str
mov al,{bx+01h}
mov ah,00h
add bx,ax
;mov [bx+2],"$"
mov ah,09h
lea dx,str+2
int 21h
ends

Bài tập: Viết chương trình nhập vào một chuỗi. In ra màn hình chuỗi thường, chuỗi in. Dùng chương con

.MODEL small
.STACK
.DATA
tb1 DB 'Nhap vao 1 chuoi: $'
tb2 DB 10,13,'Doi thanh chu thuong: $'
tb3 DB 10,13,'Doi thanh chu hoa: $'
s DB 100,?,101 dup('$')
.CODE
BEGIN:
MOV AX, @DATA
MOV DS,AX
;xuat chuoi tb1
MOV AH,09h
LEA DX,tb1
INT 21h
;nhap chuoi s
MOV AH,0AH
LEA DX,s
INT 21h
;xuat chuoi tb2
MOV AH,09h
LEA DX,tb2
INT 21h
; Goi chuong trinh con in chuoi thuong
CALL InChuoiThuong

; xuat chuoi tb3
MOV AH,09h
LEA DX,tb3
INT 21h
; Goi chuong trinh con in chuoi thuong
CALL InChuoiHoa

MOV AH,4ch
INT 21h
;**************************************
; Doi thanh chuoi ky tu thuong
InChuoiThuong PROC
LEA SI,s+1
XOR CX,CX
MOV CL,[SI]
INC SI
LapThuong:
MOV AH,02h
MOV DL,[SI]
CMP DL,'A'
JB LT1
CMP DL,'Z'
JA LT1
ADD DL,32
LT1: INC SI
INT 21h
LOOP LapThuong
RET
InChuoiThuong ENDP
; Doi thanh chuoi ky tu hoa
InChuoiHoa PROC
LEA SI,s+1
XOR CX,CX
MOV CL,[SI]
INC SI
LapHoa:
MOV AH,02h
MOV DL,[SI]
CMP DL,'a'
JB LH1
CMP DL,'z'
JA LH1
SUB DL,32
LH1: INC SI
INT 21h
LOOP LapHoa
RET
InChuoiHoa ENDP

END BEGIN

Bài tập: Viết chương trình nhập vào một chuỗi. Đếm chiều dài của chuỗi nhập vào
.MODEL small
.STACK
.DATA
tb1 DB 'Nhap vao 1 chuoi: $'
tb2 DB 10,13,'Tong chieu dai cua chuoi: $'
s DB 100,?,101 dup('$')
.CODE
BEGIN:
MOV AX, @DATA
MOV DS,AX
;xuat chuoi tb1
MOV AH,09h
LEA DX,tb1
INT 21h
;nhap chuoi s
MOV AH,0AH
LEA DX,s
INT 21h
;xuat chuoi tb2
MOV AH,09h
LEA DX,tb2
INT 21h
;Tinh chieu dai chuoi
XOR AX,AX
MOV AL,s+1 ;Chuyen chieu dai chuoi vao ax
MOV CX,0 ;Khoi tao bien dem
MOV BX,10
LapDem1:
MOV DX,0
DIV BX
PUSH DX
INC CX
CMP AX,0
JNZ LapDem1
;xuat chieu dai chuoi
MOV AH,2
LapDem2:
POP DX
OR DL,'0' ;chuyen chu so -> so
INT 21H
LOOP LapDem2

MOV AH,4ch
INT 21h
END BEGIN
 

Dancer

Thành viên Vip
Code:
Nhập 1 chuỗi ký tự từ bàn phím và kết thúc bằng phím EnterIn chuỗi ký tự ra theo chiều ngược lại
Khi nhập vào 1 ký tự sẽ đẩy vào stack , sử dụng thêm cx làm biến đếm
Khi in ra thì sẽ pop stack và in ra 1 ký tự dùng lệnh loop với cx tự giảm




; Nhap vao 1 chuoi ( ket thuc = enter) in ra man hinh theo thu tu nguoc lai
; Created by Blue Sky
.model small
.stack 100h
.data
    Nhap db "Nhap vao 1 chuoi <ket thuc nhap = enter >=$"
    kqua db 10,13,"Chuoi vua nhap vao theo thu tu nguoc lai=$"
.code
    main proc
        mov ax,@data
        mov ds,ax
                
        ;in ra thong bao nhap vao
        lea dx,Nhap
        mov ah,9
        int 21h
                        
        xor cx,cx
        input:
            mov ah,1
            int 21h
            cmp al,13
            je output
            inc cx
            xor ah,ah
            push ax
            jmp input
        ;in ra thong bao ket qua
        
        output:
        
            lea dx,kqua
            mov ah,9
            int 21h
        hienThi:
            pop ax
            mov dx,ax
            mov ah,2
            int 21h
            loop hienThi
    main endp
    end








Viết chương trình nhập 1 chuỗi tối đa 10 ký tự từ bàn phím. Hiển thị ký tự đầu và ký tự cuối của chuỗi ra màn hình.


.Model Small
.Stack
.Data
        S db 'Nhap vao mot chuoi khong qua 10 ky tu:$'
        S1 db 13,10,'Ky tu dau:$'
        S2 db 13,10,'Ky tu cuoi:$'
        Buf Db 11,?,12 dup('$')
.Code
        Begin:
                Mov Ax,@Data
                Mov Ds,Ax


                ;Xuat Chuoi S Ra Man Hinh
                Mov Dx,Offset S
                Mov Ah,09
                Int 21h


                ;Nhap mot chuoi ky tu
                Mov dx,offset Buf
                Mov ah,0ah
                Int 21h
                  
                Lea si,Buf+1
                xor cx,cx
                Mov cl,[si]    ; Lay chieu ddai thuc su cua chuoi


                ;Xuat Chuoi S1 Ra Man Hinh
                Mov Dx,Offset S1
                Mov Ah,09
                Int 21h
                  
                ;Xuat ky tu dau
                Mov ah,2
                Mov dl,[si+1]
                Int 21h


                ;Xuat Chuoi S2 Ra Man Hinh
                Mov Dx,Offset S2
                Mov Ah,09
                Int 21h
                  
                ;Xuat ky tu cuoi
                Add si,cx
                Mov ah,2
                Mov dl,[si]
                Int 21h
  
                ;Thoat khoi chuong trinh va tro va Dos
                Mov Ax,4c00h
                Int 21h
        End Begin






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
code ends
end 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 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


lap:
mov ah,7  ;nhap ky tu tu ban phim khong hien len man hinh
int 21h
cmp al,'l';so sanh neu dung thi thuc hien lenh trai
je trai
cmp al,'r'
je phai
cmp al,'u'
je tren
cmp al,'d'
je duoi
jmp thoat


trai:
mov al,3
mov ah,4
mov [si],0720h      ;xoa ky tu vua dich chuyen
sub si,2
mov [si],ax
jmp lap


phai:
mov al,3
mov ah,4
mov [si],0720h      ;xoa ky tu vua dich chuyen
add si,2
mov [si],ax
jmp lap


tren:
mov al,3
mov ah,4
mov [si],0720h      ;xoa ky tu vua dich chuyen
sub si,160
mov [si],ax
jmp lap


duoi:
mov al,3
mov ah,4
mov [si],0720h      ;xoa ky tu vua dich chuyen
add si,160
mov [si],ax
jmp lap


thoat:
mov ax, 4c00h
int 21h
code ends
end 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 segment
assume cs:code,ds:code
org  100h
begin:
        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
        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 21h
code ends
end begin
 

Dancer

Thành viên Vip
http://s1.doc.edu.vn/jh2i1fkjb33wa7b577g9lou48iyvfkz6/swf/2013/04/13/bai_tap_asm_tong_hop.LWqwYwxujP.swf
 

dinhlang1102

Thành viên
Ala Pro - Điều Trị Bệnh Tiểu Đường!

Chỉ với : 1.650.000VNĐ/lọ

Ala Pro là sản phẩm được nghiên cứu bởi các chuyên gia từ Nhật Bản đặc biệt dành riêng cho những người mắc phải chứng bệnh tiểu đường trong thời gian dài hoặc đang trong tình trạng nặng. Sản phẩm có thành phần nguyên tố 5-ALA đảm nhiệm vai trò quan trọng trong việc kìm hãm và làm thuyên giảm hàm lượng HbA1c trong hồng cầu bằng việc kích thích quá trình trao đổi chất và chuyển hoá đường trong máu thành năng lượng, giúp tái cân bằng lại hàm lượng đường huyết về mức bình thường. Ala Pro còn có khả năng hỗ trợ ngăn ngừa và làm giảm lượng Cholesterol, giảm nguy cơ bị cao huyết áp.



Xem chi tiết : http://bit.ly/ala-pro

#Thành phần:

Ala Phosphate, 5-ala, Sodium Ferrous Citriate, Silica, Alpha Starch, Hpmc

#Công dụng:

-Hỗ trợ người bị tiểu đường đang sử dụng thuốc hạ đường huyết.

-Giúp kìm hãm và làm thuyên giảm hàm lượng HbA1c trong hồng cầu bằng việc kích thích quá trình trao đổi chất và chuyển hoá đường trong máu thành năng lượng

-Giúp tái cân bằng lại hàm lượng đường huyết về mức bình thường

-Hỗ trợ ngăn ngừa và làm giảm lượng Cholesterol, giảm nguy cơ bị cao huyết áp.



# Đối tượng sử dụng:

Người bị tiểu đường lâu năm hoặc trong tình trạng nặng, có chỉ số HbA1c đặc biệt cao, hay bị cao huyết áp.

Xem chi tiết : http://bit.ly/ala-pro



#Cách dùng:

Mỗi ngày dùng 1 viên uống cùng nước.

#Cam kết:

-Sản phẩm chính hãng

-Hoàn tiền nếu không thấy bất kỳ hiệu quả nào



#Lưu ý:

Nên cân bằng dinh dưỡng với món mặn chính, món rau chính, món rau phụ

Trẻ em dưới 8 tuổi không được dùng.

# Ưu đãi:

1.650.000VNĐ/lọ

Mua ngay : http://bit.ly/ala-pro



 
xe du lịch quảng ngãi hàng xách tay quảng ngãi
Top