You are on page 1of 5

Bi thc hnh s 1

Nhp mn
Mc ch
Lm quen vi ngn ng lp trnh Assembly Bit cch vit, dch, chy v chn li (debug) mt vi chng trnh n gin

Tm tt l thuyt
Hp ng (assembler) l ngn ng bc thp, gip cho ngi lp trnh khng phi ghi nh m my (opcode) m s dng cc t ng gi nh (pseudo-code) gn vi ngn ng t nhin miu t cng vic cn thc hin. Tuy vy, assembler rt gn vi ngn ng my, i hi ngi lp trnh phi hiu bit tng i y v cu trc phn cng my tnh. Vi mi kiu kin trc ca b vi x l, c mt b lnh ring, do , c mt ngn ng assembler ring cho n. y, chng ta nghin cu assembler cho cc b vi x l Intel thuc h x86. Cc chng trnh s c vit cho ch thc (real mode) trong DOS v c bin dch bng Turbo Assembler. Cu trc thng thng ca mt chng trnh hp ng .model <Khai bo kiu chng trnh> .stack <Khai bo kch thc ngn xp> .data <Khai bo d liu> .code <Cc lnh> end V d: Chng trnh sau in ra mn hnh dng ch Hello ! .model .stack .data s .code small 100h DB mov mov Hello !$ AX,@data DS,AX ; khai bo xu k t cn in ; ly a ch data segment ghi vo DS ; V model small, y cng l a ch ; segment ca xu s ; ly a ch offset ghi vo DX ; gi hm 9, ngt 21h in ; Thot khi chng trnh

; xut chui mov DX, OFFSET s mov AH , 9 int 21h mov int end AH, 4Ch 21h

Lu : - Mi chng trnh u phi c on code thot khi chng trnh, nu khng chng trnh s khng dng khi ht chng trnh ca mnh.

Khai bo bin trong hp ng C php: <tn bin> hoc <tn bin> D<Kiu DL> D<Kiu DL> <gi tr khi to> <s phn t> dup(<gi tr khi to>)

Cc kiu d liu: B (1 byte), W (2 bytes), D (4 bytes) Nu khng khi to, dng du hi ? V d: Khai bo trong C char ch; char ch = a; char ch = 5; char s[]=\nhello world! int i=100; long l; char a[] = {1,2,3}; char a[100]; char a[100][50]; Khai bo trong hp ng ch DB ? ch DB a ch DB 5 s DB 10,13,hello world!$ i DW 100 l DD ? a DB 1,2,3 a DB 100 dup(?) a DB 100 dup(50 dup(?))

Dch, lin kt, chy v chn li chng trnh t du nhc DOS Cn c cc file: tasm.exe (dch), tlink.exe (lin kt), td.exe (chn li). Cc bc nh sau: B1. Thit lp ng dn path = %path%;<ng dn n th mc cha cc file k trn> B2. Bin dch t file .ASM sang file .OBJ Tasm <tn file chng trnh>.ASM B3. Bin dch t file .OBJ sang file .EXE Tlink <tn file>.OBJ B4: chy chng trnh: <tn file>.EXE B5: chn li (nu cn thit) Td <tn file>.EXE t ng ha, ta c th to file .BAT cha cc lnh trn. V d: To file RunASM.bat trong cng th mc vi tp tin .ASM vi ni dung nh sau : tasm %1 tlink %1 %1

(%1 l ly tham s th nht trong command line) Sau bin dch, lin kt v thc thi chng trnh hello.ASM ta ch cn g : RunASM hello Cng c EditPlus y l cng c son tho vn bn tin dng, cho php t ng i mu ch theo c php. Ngoi ra cn c th thit t phm tt gi cc tin ch khc. dng cho son tho chng trnh assembler, cn copy file nh ngha c php vo th mc ci t v ng k s dng n cho nhng file c tn m rng .asm. B0. Cu hnh Edit Plus: xem trong file hng dn B1. Bin dch file .ASM : nhn Ctrl + 1 s bin dch file ang son tho thnh .OBJ B2. Lin kt : nhn Ctrl + 2 s bin dch file .OBJ thnh .EXE B3. Chy chng trnh : nhn Ctrl + 3 s chy chng trnh .EXE B4. Chn li chng trnh : nhn Ctrl + 4 s debug chng trnh .EXE Lu : - trnh phin phc khi lm vic vi Turbo Assembler, trnh t tn th mc c cha khong trng. - Trc khi nhn Ctrl + 1 ln u tin, nh lu chng trnh vi tn cn thit. Mt s lnh c bn MOV INC DEC ADD SUB INT des,src des des des,src des,src num : chp d liu t src sang des : tng des mt n v : gim des mt n v : des = des + src : des = des src : gi ngt

Ti liu tham kho


1. 2. 3. 4. Nguyn Minh Tun, Gio trnh hp ng - Chng 1, HKHTN, 2002 Randal Hyde, The art of assembly language programming Chapter 1. Norton Guide Dan Rollins, TechHelp v.6.0

Bi tp
Bi 1. Vit CT nhp vo 1 k t, xut ra k t V d: Moi ban nhap 1 ky tu: b Ky tu va nhp: b Bi 2. Vit chng trnh xut ra mn hnh mt s dng. V d: De chay duoc 1 CT hop ngu ban can thuc hien cac buoc sau:

Dich file ASM thanh file OBJ Lien ket file OBJ thanh file EXE Chay file EXE Bi 3. Vit CT nhp vo 1 k t, xut ra k t lin trc v lin sau. V d: Moi ban nhap 1 ky tu: b Ky tu lien truoc: a Ky tu lien sau: c Bi 4. Vit CT nhp vo 1 k t thng. In ra k t Hoa V d: Moi ban nhap 1 ky tu: b Ky tu Hoa: B Bi 5. Vit CT nhp vo 1 k t hoa. In ra k t thng V d: Moi ban nhap 1 ky tu: B Ky tu thng: b Bi 6. Vit chng trnh nhp vo 2 s nguyn dng x1, x2 (1 x2 < x1 < 9). Xut ra kt qu cc php tnh: x1-1, x1 +2, x1+x2, x1-x2 V d: x1 = 5 x2 = 3 x1 1 = 4 x1 + 1 = 6 x1 + x2 = 8 x1 x2 = 7

M rng
1. T tm hiu xem hm no trong ngt 21h dng nhp mt xu k t ? Ngoi ngt 21h, cn ngt no c th dng nhp xut t bn phm ? (dng NortonGuide hoc TechHelp). 2. Vit chng trnh nhp tn v in ra mn hnh cu Hello + tn nhp. 3. Tm hiu xem ti sao khng c lnh MOV x1, x2 (x1,x2 l hai bin trong b nh) 4. Hai lnh INC AX v ADD AX, 1 khc nhau ch no ?

Hng dn
Bi 1. nhp 1 mt k t s dng hm 1 ca ngt 21h, xut, s dng hm 2. V d: mov AH,1 int 21h ; kt qu trong AL mov DL,AL ; k t cn xut trong DL mov AH,2 int 21h Bi 2. Cp k t xung dng l 10,13. C th khai bo nhiu xu k t hoc chung mt xu. V d: Msg3 DB 10,13,9,1. Dich file ASM thanh file OBJ.$ Msg4 DB 10,13,9,2. Lien ket file OBJ thanh file EXE.$ Hoc

Msg34

DB 10,13,9,1. Dich file ASM thanh file OBJ. DB 10,13,9,2. Lien ket file OBJ thanh file EXE.$

Bi 3, 4. K t hoa v k t thng ca cng mt ch ci ting Anh cch nhau 20h. Do , chuyn i ch hoa thnh ch thng v ngc li, ch cn dng lnh ADD, SUB. Bi 5. chuyn i cc k t 0 9 thnh s 0 9 ch cn thc hin php tr i 48 (m ca 0). Sau khi thc hin php tnh, chuyn i thnh k t v in ra mn hnh (c th dng biu din Hex).

You might also like