Chương 9 STACK & CHƯƠNG TRÌNH CON - PowerPoint PPT Presentation

Ch ng 9 stack ch ng tr nh con
Download
1 / 32

  • 186 Views
  • Uploaded on
  • Presentation posted in: General

Chương 9 STACK & CHƯƠNG TRÌNH CON. Giới thiệu STACK Một số ứng dụng của STACK Cấu trúc của 1 CTC Cơ chế làm việc của 1 CTC Vấn đề truyền tham số Chương trình gồm nhiều MODULE. GiỚI THIỆU STACK. Là 1 phần của bộ nhớ, được tổ chức lưu trữ dữ liệu theo cơ chế vào sau ra trước (LIFO).

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Download Presentation

Chương 9 STACK & CHƯƠNG TRÌNH CON

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Ch ng 9 stack ch ng tr nh con

Chng 9 STACK &CHNG TRNH CON

Gii thiu STACK

Mt s ng dng ca STACK

Cu trc ca 1 CTC

C ch lm vic ca 1 CTC

Vn truyn tham s

Chng trnh gm nhiu MODULE

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

GiI THIU STACK

  • L 1 phn ca b nh, c t chc lu tr d liu theo c ch vo sau ra trc (LIFO).

STACK : l mt cu trc d liu mt chiu. Cc phn t ct vo v ly ra theo phng thc LIFO (Last In First Out). Mi chng trnh phi dnh ra mt khi b nh lm stack bng khai bo STACK. V d : .STACK 100H ; Xin cp pht 256 bytes lm stack

Chng 10: CHNG TRNH CON


L p tr nh v i stack

LP TRNH VI STACK

  • Trong lp trnh c khi cn truy xut n cc phn t trong STACK nhng khng c thay i trt t ca STACK. thc hin iu ny ta dng thm thanh ghi con tr BP :tr BP v nh Stack : MOV BP,SPthay i gi tr ca BP truy xut n cc phn t trong Stack : [BP+2]

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

  • Phn t c a vo STACK ln u tin gi l y STACK, phn t cui cng c a vo STACK c gi l nh STACK.

  • Khi thm mt phn t vo STACK ta thm t nh, khi ly mt phn t ra khi STACK ta cng ly ra t nh a ch ca nh nh STCAK lun lun b thay i.

SS dng lu a ch segemnt ca on b nh dng lm STACKSP lu a ch ca nh nh STACK (tr ti nh STACK)

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

TH D

STACK

A,B,C l cc WordMOV BP,SP

SP

MOV AX,[BP]

;AX = D

MOV AX,[BP+2]

;AX = C

MOV AX,[BP+6]

;AX = A

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

lu 1 phn t vo Stack ta dng lnh PUSH ly 1 phn t ra t Stack ta dng lnh POP

PUSH ngun : a ngun vo nh STACK PUSHF : ct ni dung thanh ghi c vo STACK

  • ngun l mt thanh ghi 16 bit hay mt t nh

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

POP v POPF : dng ly mt phn t ra khi STACK.

C php : POP ch : a ngun vo nh STACK

POPF : ct ni dung nh STACK vo thanh ghi c

Ch : - y ch l mt thanh ghi 16 bit (tr thanh ghi IP) hay mt t nh

Cc lnh PUSH, PUSHF, POP v POPF khng nh hng ti cc c

Chng 10: CHNG TRNH CON


M t s ng d ng c a stack

MT S NG DNG CA STACK

  • Khc phc cc hn ch ca lnh MOVEx : MOV CS,DS ; sai PUSH DS POP CS ; ng

  • Truyn tham s cho cc chng trnh con

  • Lu tm thi gi tr thanh ghi hay bin.

Chng 10: CHNG TRNH CON


Th d 2

TH D 2

  • Nhp vo 1 chui, in chui o ngcEx : nhp : Cong nghe thong tin xut : int gnoht ehgn gnoC

Chng 10: CHNG TRNH CON


V d minh h a d ng stack trong thu t to n o ng c th t nh sau

V d minh ha : dng STACK trong thut ton o ngc th t nh sau :

  • ; Nhp chui k t

  • Khi ng b m

  • c mt k t

  • WHILE k t <> 13 DO

  • Ct k t vo STACK

  • Tng bin m

  • c mt k t

  • END_WHILE

  • ; Hin th o ngc

  • FOR bin m ln DO

  • Ly mt k t t STACK

  • Hin th n

  • END_FOR

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

GiI THIU CHNG TRNH CON

  • CTC l 1 nhm cc lnh c gp li di 1 ci tn m ta c th gi t nhiu ni khc nhau trong chng trnh thay v phi vit li cc nhm lnh ny ti ni cn n chng.

Li ch

CTC lm cho cu trc logic ca ca CT d kim sot hn, d tm sai st hn v c th ti s dng m tit kim c cng sc v thi gian lp trnh.

Chng 10: CHNG TRNH CON


C u tr c c a ctcon

CU TRC CA CTCON

TNCTC PROC [NEAR|FAR]

CC LNH CA CTC

RET

TNCTC ENDP

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

MINH HA

  • Vit chng trnh nhp 1 s n (n nguyn dng v <9). Tnh giai tha ca n v xut ra mn hnh di dng s hex (gii hn kt qu 16 bit).

  • Vit chng trnh tm s hon thin (gii hn 2 ch s) v in n ra mn hnh.

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

TH D

.DATA

EXTRN MemVar : WORD, Array1 : BYTE , ArrLength :ABS .CODEEXTRN NearProc : NEAR , FarProc : FAR.MOV AX,MemVarMOV BX, OFFSET Array1MOV CX, ArrLengthCALL NearProc.

CALL FarProc..

Chng 10: CHNG TRNH CON


C ch l m vi c c a ctc

C CH LM VIC CA CTC

  • C ch gi v thc hin CTC trong ASM cng ging nh ngn ng cp cao.

Khi gp lnh gi CTC th : . a ch ca lnh ngay sau lnh gi CTC s c a vo STACK.. a ch ca CTC c gi s c np vo thanh ghi IP.. Quyn iu khin ca CT s c chuyn giao cho CTC.. CTC s thc hin cc lnh ca n v khi gp RET, n s ly a ch ct trn STACK ra v np li thanh ghi IP thc thi lnh k tip.

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

PUBLIC EXTRN GLOBAL

thun li trong vic dch, lin kt chng trnh a file, Assembler cung cp cc iu khin Public, Extrn v Global.

PUBLIC

Ch cho Assembler bit nhn (label) no nm trongmodule ny c php s dng cc modulekhc.

C php : PUBLIC tn nhn khai bo nhn

TN CTC

TN BiN

TN I TRC NHN

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

EXTRN

Bo cho Assembler bit nhng nhn c khai bo PUBLIC cc modulekhc c s dng trong module ny mkhng cn phi khai bo li.

C php : EXTRN Tn nhn : Kiu

BYTE

DATAPTR

WORD

NEAR

DWORD

FAR

PROC

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

GLOBAL

THAY TH PUBLIC V EXTRN.

Vit chng trnh nm trn 2 file (2 module) vi s phn cng nh sau :Module ca chng trnh chnh (Main.ASM) c nhim v xc nh Offset ca 2 chui k t v gi CTC ni 2 chui ny v cho hin kt qu ra mn hnh.Module CTC (Sub.ASM) lm nhim v ni 2 chui v a vo b nh.

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

V d minh ho v STACK, CALL/RET : chng trnh in mt s nguyn (16 bit) ra mn hnh

PrintNum10 PROC

; s nguyn N nm trong AX

PUSH BX CX DX

MOV CX, 0 ; so lan push (so ky tu)

laysodu:

XOR DX, DX ; cho DX = 0 trc khi chia

MOV BX, 10

DIV BX ; s d trong DX, phn nguyn trong AX

PUSH DX ; lu phn d vo stack

INC CX

CMP AX, 0 ; ht cha?

JNZ laysodu ; cha ht, ly s d tip

MOV AH, 2

INSO:

POP DX

ADD DL, '0'

INT 21H

LOOP inso

POP DX CX BX

RET

ENDP PrintNum10

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

CHNG TRNH A FILE

  • Cho php nhiu user cng tham gia gii quyt 1 chng trnh ln.

  • Sa module no th ch cn dch li module .

  • Mi module ch gii quyt 1 vn d tm sai st.

Chng 10: CHNG TRNH CON


V n truy n tham s

VN TRUYN THAM S

  • CHUYN GI TR CA THAM S T CT GI CT C GI

C 3 cch truyn tham s

Thng qua thanh ghi

Thng qua bin ton cc

Thng qua STACK

Chng 10: CHNG TRNH CON


Truy n tham s th ng qua thanh ghi

TRUYN THAM S THNG QUA THANH GHI

  • D

  • N GiN

  • THNG C S DNG I VI NHNG CT THUN TY ASM

T 1 GI TR NO VO THANH GHI CTCHNH V SAU CTC S S DNG GI TR NY TRONG THANH GHI.

Chng 10: CHNG TRNH CON


Truy n tham s th ng qua bi n global

TRUYN THAM S THNG QUA BiN GLOBAL

  • KHAI BO BiN TON CC.

  • DNG N CHUYN CC GI TR GiA CT GI V CT C GI.

CCH NY THNG C DNG :

TRONG 1 CT ViT THUN TY BNG ASM

ViT HN HP GiA ASM V 1 NGN NG CP CAO

Chng 10: CHNG TRNH CON


Truy n tham s qua stack

TRUYN THAM S QUA STACK

  • PHC TP HN.

  • DNG RT NHIU KHI ViT CHNG TRNH HN HP GiA ASM V NGN NG CP CAO.

Chng 10: CHNG TRNH CON


Chuy n gi tr t ctcon l n ct ch nh

CHUYN GI TR T CTCON LN CT CHNH.

  • CNG THNG QUA CC THANH GHI,B NH V STACK.

NU GI TR TR V L 8 BIT HOC 16 BIT (CHO KHAI BO CHAR, INT, CON TR GN) TH GI TR PHI C T TRONG THANH GHI AX CA HM TRC KHI QUAY V CTCHNH.

Chng 10: CHNG TRNH CON


Chuy n gi tr t ctcon l n ct ch nh1

CHUYN GI TR T CTCON LN CT CHNH.

  • NU GI TR QUAY LI L 32 BIT (CHO KHAI BO LONG, CON TR XA) TH GI TR PHI C T TRONG THANH GHI DX,AX CA HM TRC KHI QUAY V CT CHNH.

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

NEAR | FAR bo cho lnh RET ly a ch quay v chng trnh gi n trong STACK.

  • NEAR : ly a ch OFFSET (16BIT) trong STACK v gn vo thanh ghi IP.

  • FAR : ly a ch OFFSET v SEGMENT trong STACK np vo thanh ghi CS:IP.

Chng 10: CHNG TRNH CON


V n b o v c c thanh ghi

VN BO V CC THANH GHI

  • CN C QUAN TM TRONG QU TRNH LP TRNH ASM.

  • RT D XY RA CC TRNG HP LM MT GI TR CA M CT CHNH T VO THANH GHI S DNG SAU NAY KHI TA GI CTCON.

Chng 10: CHNG TRNH CON


C c v d minh h a

CC V D MINH HA

NHP VO 1 S H HEX. IN RA S NHP VI YU CU SAU :

ViT CTCON NHP S

ViT CTCON XUT S

CTCHNH GI 2 CTCON TRN.

Chng 10: CHNG TRNH CON


Luy n t p l p tr nh c10

LUYN TP LP TRNH C10

Bi 1 : Vit chng trnh nhp 1 s nguyn n (n<9). Tnh giai tha ca n v xut kt qu ra mn hnh di dng s Hex (gii hn 16 bits).

Bi 2 :Vit chng trnh nhap vao 1 chui ky tu. Hay in ra man hinh chui ky tu vua nhap theo th t o (trong mi t o tng k t).

Bi 3 :Vit chng trnh kim tra mt biu thc i s c cha cc du ngoc (nh (), [] v {}) l hp l hay khng hp l .

V d : (a + [b { c * ( d e ) } ] + f) l hp l nhng (a + [b { c * ( d e )] } + f) khng hp l.

HD : dng ngn xp PUSH cc du ngoc tri ( (, {, [ ) vo Stack

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

Bi 4 : Vit chng trnh nhp vo 1 k t, cho bit k t va nhp thuc loi gi ? k t, k s ,ton t ton hc hay k t khc. Nu k t l phm Escape th thot chng trnh.

Chng 10: CHNG TRNH CON


Ch ng 9 stack ch ng tr nh con

Bi 6 :Vit chng trnh nhp 1 chui k t. Xut k t di dng vit hoa k t u ca tng t,cc k t cn li l ch thng

Ex :Nhp : ngo phuoc nguyenXut : Ngo Phuoc NguyenNhp : VU tHanh hIEnXut : Vu Thanh Hien

Bi 7 : Vit chng trnh tm s hon thin (gii hn 2 ch s). Xut cc s hon thin t s ln nht n s nh.

Chng 10: CHNG TRNH CON


  • Login