Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 133 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
133
Dung lượng
114,04 KB
Nội dung
Bài 1: Viết chương trình 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 hai câu "Chao mung ban den voi Assembly" "Assembly that de!" Mỗi câu 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 Lea DX,Tbao1 Mov AH,9 Int 21h ;xuat thong bao 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 ký tự xuất 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, int 21h ; nhap ky tu Mov ah, Int 21h Mov KyTu, al ; thong bao ket qua lea dx, TBao2 mov ah, int 21h ; hien thi ky tu da nhap Mov ah, 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 ký tự Xuất hình ký tự đứng trước 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, int 21h ; nhap ky tu Mov ah, Int 21h Mov KyTu, al ; thong bao ket qua lea dx, TBao2 mov ah, int 21h ; hien thi ky tu da nhap Mov ah, Mov dl, KyTu Int 21h ; hien thi ky tu truoc ky tu nhap lea dx, TBao3 mov ah, int 21h mov ah, mov dl, KyTu dec dl int 21h ; hien thi ky tu sau ky tu nhap lea dx, TBao4 mov ah, int 21h mov ah, mov dl, KyTu inc dl int 21h mov ah, 4Ch int 21h end Bài 5: Viết chương nhập vào 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 thong bao LEA DX,Msg1 MOV AH,9 INT 21h ; Nhap vao ki tu thuong va doi ki tu hoa MOV AH,1 INT 21h ; Doc ki tu thuong va luu vao AL SUB AL,20h ; Doi 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 6: 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 thong bao LEA DX,Msg1 MOV AH,9 INT 21h ; Nhap vao ki tu hoa va doi ki tu thuong MOV AH,1 INT 21h ; Doc ki tu hoa va luu vao AL ADD AL,20h ; Doi 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 7: Viết chương trình nhập vào chuỗi In hình chuỗi thường, chuỗi in Dùng chương .MODEL small STACK DATA tb1 DB 'Nhap vao chuoi: $' tb2 DB 10,13,'Doi chu thuong: $' tb3 DB 10,13,'Doi 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 in chuoi thuong CALL InChuoiThuong ; xuat chuoi tb3 MOV AH,09h LEA DX,tb3 INT 21h ; Goi chuong trinh in chuoi thuong CALL InChuoiHoa MOV AH,4ch INT 21h ;************************************** ; Doi 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 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 8: Viết chương trình nhập vào chuỗi Đếm chiều dài chuỗi nhập vào .MODEL small STACK DATA tiep: xor bx, bx ; gan bx=0 xor cx,cx ; gan cx=0 mov cx,8 ; nhap cho toi lan Nhap: NhapKyTu tam cmp al,13 je Ngung cmp al,'0' jb Nhap cmp al,'1' ja Nhap XuatKyTu mov sub tam ah,tam ah,'0' shl bl,1 ; dich bl sang trai bit or bl,ah ; lay bit hay Loop Nhap Ngung: ret NhapSoNhiPhan endp XuatSoNhiPhan Proc jmp khaibao tam2 db ? khaibao: xor cx,cx ; gan cx =0 mov cx,8 Lap2: rol bl,1 jc Xuat1 ; neu CF=1 Xuat0: mov tam2,30h Jmp xuat Xuat1: mov jmp tam2,31h xuat xuat: XuatKyTu loop tam2 lap2 mov b2,bl ret XuatSoNhiPhan TongNhiPhan ; giai thuat: Endp proc ; dich phai bit doi voi b1 va b2 ; sau cong lai ; + neu: ; jmp K_bao tong db ? bitSo1 db ? bitSo2 db ? du db K_bao: xor cx, cx ? mov cx,8 xor bx,bx ; bang neu du nguoc lai bang mov bl, b1 ; bl la so thu nhat mov bh, b2 ; bh la so thu hai xor dl,dl mov tong,0 mov du,0 ; khong co du @Lap: SoDauTien: ror bl,1 ; xoay phai ky tu jc LaBit_1 Labit_0: mov Labit_1: bitSo1,0 jmp SoTiepTheo mov bitSo1,1 bh,1 Bit1 ; xoay phai ky tu mov jmp bitSo2,0 TinhTong mov bitSo2,1 SoTiepTheo: ror jc bit0: bit1: ; tong bit TinhTong: mov dl, bitSo1 add dl, bitSo2 ; dl= bitSo1 + BitSo2 add dl, du ; dl= bitSo1 + BitSo2 + du cmp dl, je TongDu1 or tong,dl shl tong,1 mov du,0 ; khong du jmp LamTiep TongDu1: mov shl LamTiep: loop @lap mov bl,tong ret TongNhiPhan endp end du,1 tong,1 Bàitậplậptrìnhhợpngữ - Nhập mảng chuỗicác ký tự Bàitập nhập mảng: ;Nhap vao n (n tu den 9) ; Nhap vao mang n so tu den ; in so lon nhat ;tinh tong ; sap xep mang tang dan model small max2so local mov cmp ja macro d1,d2 thoi al, d1 al, d2 thoi mov thoi: al,d2 endm min2somacro d1,d2 local thoi mov al, d1 cmp al, d2 jb thoi mov thoi: al,d2 endm hoanvimacro d1,d2 push mov mov mov mov pop ax ; luu lai ax al, d1 ah, d2 d1, ah d2,al ax endm XuongHang macro mov ah,2h mov dl,10 int 21h endm NhapKyTu mov int macro ah, 1h 21h endm XuatKyTu macro d1 mov ah, 2h mov dl, d1 int 21h endm stack 100h data n db ? max db ? db ? tb tb1 tb2 db db db 'Nhap vao so n: $' 'Nhap a[] :$' 'Max:$' tb3 arr db db 'Min:$' dup('0') code ;lay dia chi vung du lieu mov ax, @data mov ds, ax ; xuat thong bao lea dx, tb call XuatMess ; Nhap vao n NhapKyTu mov n, al ; xuat thong bao XuongHang lea dx, tb1 call XuatMess ;nhap mang call NhapMang ; xuat thong bao XuongHang lea dx, tb2 call XuatMess call XuatKyTu TimMax max XuongHang lea dx, tb3 call XuatMess XuatKyTu XuongHang ;==================================== ;tro ve dos mov ah, 4ch int 21h XuatMess proc mov ah, int 21h ret XuatMess endp NhapMang proc mov cl, n mov ch, sub cl,'0' mov si,0 Lap: NhapKyTu mov arr[si],al inc si loop Lap ret NhapMang endp TimMax proc mov cl,n mov ch,0 sub cl,'0' mov si,0 mov ch, arr[si] mov max,ch mov min,ch mov ch,0 inc si dec cx lap1: max2so max,arr[si] mov max, al min2so min,arr[si] mov inc loop lap1 ret TimMax min,al si endp ;==================================== End Bàitập nhập chuỗi: ;Nhap chuoi ; xuat chuoi .model small stack 100h data tb1 db 'Nhap chuoi(dung Nhan): $' tb2 db 'Nhap chuoi(dung Loop): $' tb3 db 'xuat chuoi nguoc: $' tb4 db 10,'Nhap Mang $' tb5 db 10,'Phan tu thu :$' code ; ket thuc ; Lay dia chi vung du lieu mov ax, @data mov ds, ax ; xuat thong bao lea dx, tb1 call XuatTB call NhapChuoi1 ; xuat thong bao lea dx, tb2 call XuatTB call NhapChuoi2 ; xuat tb3 lea dx, tb3 call xuattb call XuatChuoiNguoc ; tro ve dos mov ah, 4ch int 21h ;=============================================== ; -nhap chuoi binh thuong NhapChuoi1 PRoc ; luu dia chi quay ve Nhap1: mov int cmp ah, 1h 21h al, 13 je thoat1 jmp Nhap1 thoat1: call xuonghang ret NhapChuoi1 endp ; -nhap chuoi luu vao ngan xep -NhapChuoi2 PRoc pop xor bx ; luu dia chi quay ve cx,cx ; xoa bien dem mov ah, 1h Nhap2: int 21h cmp al, 13 je thoat2 inc cx push ax jmp Nhap2 thoat2: push bx call xuonghang ret NhapChuoi2 endp ; -xuat chuoi nguoc -XuatChuoiNguoc PRoc ; luu dia chi quay ve pop bx cmp cx, jl thoat xuat: pop ax mov mov int dl, al ah, 2h 21h loop thoat: mov mov int xuat ah, 2h dl,10 21h push bx ret XuatChuoiNguoc endp ; XuatTB mov int XuatTB PROC ah, 9h 21h ret Endp ; -xuat ky tu cuong hang xuonghang proc mov ah, 2h mov dl,10 int 21h ret xuonghang endp end ... 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... 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 chuoi... 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 8: Viết