bai tap vxl

25
PHOØNG KYÕ THUAÄT VI XÖÛ LYÙ ThS.KS.NGUYEÃN ÑÌNH LUYEÄN 1 PHOØNG KYÕ THUAÄT VI XÖÛ LYÙ ThS.KS.NGUYEÃN ÑÌNH LUYEÄN 2 KHOA KT&CN BT LT . ASSEMBLER BAØI TAÄP LAÄP TRÌNH ASSEMBLY ; BAI TAP1 ; TLINK BT1+BTlib ;----------------- Dosseg ;phan dau tien .model small ;khai bao bo nho co kich thuong nho .stack 200h ;dang ki voi he thong 1 bo nho 200h .data about db 'Chuong trinh In chuoi nguoc', '$' ;db khai bao pham vi 8 bit <->256 ki tu prompt db 13,10,'Nhap 1 chuoi :','$' ;13,16 xuong dau dong mess db 13,10,'Ket qua :$' errormess db 13, 10,'Chuoi khong hop le !$' MAX equ 100 chuoi db MAX dup(?) len db ? .code extrn write_char: near, disp_string: near extrn finish: near, getnumber: near start: mov bx, @data ;la phan bat buoc mov ds, bx ;chuyen dx->ds mov es, bx ; mov dx, offset about ;chuyen chuoi vao dx call disp_string ;goi xuat chuoi call getstring ; call process ; call finish. ;-------------------------------- ; Nhap 1 chuoi tu ban fim ; tra ve: AX=chi toi chuoi nhap ;-------------------------------- getstring proc ;dinh nghia getstring push bx ;nap bx vao ngan xep stack push cx push dx mov dx, offset prompt call disp_string mov ah, 3Fh ; nhap chuoi mov bx, 0 mov cx, MAX mov dx, offset chuoi ; chua vao DX int 21h sub ax, 2 ;do dai thuc cua chuoi cmp ax, 0 jg validstring mov dx, offset errormess call disp_string call finish ret validstring: mov word ptr len, ax mov ax, dx pop dx pop cx pop bx ret getstring endp ;----------------------- ;----------------------- process proc mov dx, offset mess call disp_string KHOA KT&CN BT LT . ASSEMBLER

Upload: hong-nhan-kudo

Post on 11-Sep-2015

235 views

Category:

Documents


0 download

DESCRIPTION

Bai Tap VXL

TRANSCRIPT

PHONGKYTHUATVIXLYThS.KS.NGUYENNHLUYEN1KHOAKT&CNBTLT.ASSEMBLER

BAITAPLAPTRNHASSEMBLY;BAITAP1;TLINKBT1+BTlib;-----------------Dosseg;phan dau tien.modelsmall;khai bao bo nho co kich thuong nho.stack200h;dang ki voi he thong 1 bo nho 200h.data

aboutdb'ChuongtrinhInchuoinguoc','$';db khai bao pham vi 8 bit 256 ki tupromptdb13,10,'Nhap1chuoi:','$';13,16 xuong dau dongmessdb13,10,'Ketqua:$'errormessdb13,10,'Chuoikhonghople!$'MAXequ100chuoidbMAXdup(?)lendb?.code

extrnwrite_char:near,disp_string:nearextrnfinish:near,getnumber:nearstart:movbx,@data;la phan bat buocmovds,bx;chuyen dx->dsmoves,bx;

movdx,offsetabout;chuyen chuoi vao dxcalldisp_string;goi xuat chuoicallgetstring;callprocess;callfinish.;--------------------------------;Nhap1chuoitubanfim;trave:AX=chitoichuoinhap;--------------------------------getstringproc;dinh nghia getstringpushbx;nap bx vao ngan xep stackpushcxpushdxmovdx,offsetpromptcalldisp_stringmovah,3Fh;nhapchuoimovbx,0movcx,MAXmovdx,offsetchuoi;chuavaoDXint21hsubax,2;dodaithuccuachuoicmpax,0jgvalidstringmovdx,offseterrormesscalldisp_stringcallfinishretvalidstring:movwordptrlen,axmovax,dxpopdxpopcxpopbxretgetstringendp;-----------------------;-----------------------processprocmovdx,offsetmesscalldisp_string

PHONGKYTHUATVIXLYThS.KS.NGUYENNHLUYEN2KHOAKT&CNBTLT.ASSEMBLER

movbx,offsetchuoimovcx,0movcl,lenmainloop:movsi,cxdecsimovdl,[bx+si]callwrite_charloopmainloopretprocessendp;---------------------endstart

;BAITAP2;TLINKBT2+BTlib;-----------------dosseg.modelsmall.stack200h.data

aboutdb'ChuongtrinhhienuocsocuaN','$'promptdb13,10,'NhapsoN(La3canhtamgiac','$'mess2db13,10,'-->Khongphaicanhtamgiac','$'errormessdb'Khonghople!','$'MAXequ10chuoisodbMAXdup(?)

.code

extrnstring_to_number:near,disp_string:nearextrnfinish:near,getnumber:nearstart:movbx,@datamovds,bx

movdx,offsetaboutcalldisp_stringcallgetdatacallprocesscallfinish;---------------------getdataprocmovdx,offsetprompt1calldisp_stringcallgetnumbermova,al

movdx,offsetprompt2calldisp_stringcallgetnumbermovb,al

PHONGKYTHUATVIXLYThS.KS.NGUYENNHLUYEN15KHOAKT&CNBTLT.ASSEMBLER

movdx,offsetprompt3calldisp_stringcallgetnumbermovc,alretgetdataendp;-------------------------------processproccompare:moval,0addal,aaddal,bcmpal,cjlenotvalidmoval,0addal,baddal,ccmpal,ajlenotvalidmoval,0addal,caddal,acmpal,bjlenotvalidmovdx,offsetmess1calldisp_stringretnotvalid:movdx,offsetmess2calldisp_stringretprocessendp;--------------------------------endstart

;BAITAP13;TLINKBT13+BTlib;-----------------dosseg.modelsmall.stack200h.data

aboutdb'Chuongtrinhxettansoxuathiennguyenam','$'promptdb13,10,'Nhapchuoihoten(