Thông tin tài liệu:
Tài liệu tham khảo Bài giảng hợp ngữ gồm 9 chương - Chương 6 Ngăn xếp và thủ tục
Nội dung trích xuất từ tài liệu:
Bài giảng hợp ngữ - Chương 6 ng VI: Ng n x p và th t cBài gi ng h p ng Ch CH NG VI: NG N X P VÀ TH T C6.1 Các thành ph n c a ch ng trình Ng n x p là vùng nh c bi t c a ch ng trình. Có th s d ng vùng nh này lutr d li u và gi i phóng nó khi không dùng n. Nh v y, vi c s d ng ng n x p m tcách h p lý s giúp ti t ki m b nh . Trong h p ng , kích th c ng n x p c a ch ngtrình c khai báo sau t khoá .Stack:TITLE .MODEL .STACK .DATA .CODE M t ch ng trình bao g m ba ph n c b n: Mã l nh, D li u, Ng n x p. Khi ch ngtrình c n p vào b nh thì ba ph n trên c n p vào các n nh khác nhau:+ n nh ch a ph n mã l nh c g i là n mã (Code Segment), a ch c a nó c l u gi trong thanh ghi n CS.+ n nh ch a ph n d li u c g i là n d li u (Data Segment), a ch c a nó c l u gi trong thanh ghi n DS.+ n nh ch a ph n ng n x p c g i là n ng n x p (Stack Segment), a ch c anó c l u gi trong thanh ghi n SS. N i dung c a ch ng này ch y u nghiên c u v n ng n x p.6.2 Cách s d ng ng n x p6.2.1 C t d li u vào ng n x p c t d li u vào ng n x p ta s d ng l nh Push, cách vi t l nh nh sau: PUSH : là m t t hanh ghi hay m t bi n có kích th c 16 bít (1 word).Sau l nh Push thì giá tr c a toán h ng Ngu n v n gi nguyên.Ví d 1: PUSH AX nh trên c t n i dung thanh ghi AX vào ng n x p.Ví d 2: PUSH A nh trên c t n i dung bi n A vào ng n x p (A ph i là bi n ki u Word).6.2.2 L y d li u kh i ng n x p l y d li u kh i ng n x p ta s d ng l nh Pop, cách vi t l nh nh sau: POP < ích> ích>: là m t t hanh ghi hay m t bi n có kích th c 16 bít (1 word). 42 ng VI: Ng n x p và th t cBài gi ng h p ng Ch Vi c l y d li u kh i ng n x p s ng th i gi i phóng ô nh ang ch a d li u (t c làcó th dùng nó ch a d li u khác).Ví d 1: POP AX nh trên l y d li u t ng n x p t vào thanh ghi AX.Ví d 2: POP A nh trên l y d li u t ng n x p t vào bi n A (A ph i là bi n ki u Word).6.2.3 ng d ng c a ng n x pa) Ví d 1: Hãy chuy n n i dung c a thanh ghi n DS vào thanh ghi n ES.Gi i: Do không th chuy n tr c ti p n i dung c a hai thanh ghi n cho nhau (xem l i ph n nh MOV) nên ta s s d ng ng n x p làm trung gian: d li u c chuy n t DS vàong n x p, sau ó l y t ng n x p chuy n vào ES: PUSH DS ;C t DS vào ng n x p POP ES ;L y d li u t ng n x p t vào ESb) Ví d 2: Vi t ch ng trình nh p m t kí t t bàn phím r i hi n nó u dòng ti p theo.Gi i:TITLE Vi du 2.MODEL SMALL.STACK 100H.CODE MAIN PROC MOV AH, 1 ;Ch c n ng s 1: Nh p m t kí t INT 21h PUSH AX ;C t kí t vào ng n x p MOV AH, 2 ; a con tr v u dòng ti p theo MOV DL, 0Dh INT 21h MOV DL, 0Ah INT 21h POP DX ;L y kí t t ng n x p t vào DL INT 21h ;Hi n th kí t MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDPEND MAIN 43 ng VI: Ng n x p và th t cBài gi ng h p ng ChGi i thích: Kí t nh p vào c c t thanh ghi AL. a con tr xu ng u dòng ti p theo thìph i hi n th hai kí t có mã ASCII là 0Dh (CR: v u dòng) và 0Ah (LF: xu ng dòng).Quá trình hi n th hai kí t này s làm thanh ghi AL b thay i (xem l i ch c n ng s 2 a ng t 21h). Do ó c n ph i l u k í t ban u vào ng n x p t r c khi xu ng dòng, khinào mu n hi n th kí t này thì l i l y nó ra t ng n x p.c) Ví d 3: Vi t l nh th c hi n các công vi c sau:+ L u n i dung thanh ghi c vào AX.+ Xoá thanh ghi c .Gi i: Ta không th tác ng t i thanh ghi c b ng các l nh thông th ng ã h c nh MOV,ADD, SUB, AND, OR…B vi x lý 8086 cung c p hai l nh sau t hao tác v i thanh ghi (c hai l nh u liên quan t i ng n x p): PUSHF ;C t n i dung thanh ghi c vào ng n x p POPF ;L y d li u t ng n x p t vào thanh ghi c d ng hai l nh này ta có th gi i quy t yêu c u t ra trên: PUSHF POP AX ;chuy n n i dung thanh ghi c t ng n x p vào AX XOR BX, BX ;xóa BX (BX = 0) PUSH BX ; t giá tr 0 vào ng n x p POPF ;Chuy n giá tr 0 t ng n x p vào thanh ghi c (xoá các c )6.2.4 Cách th c làm vi c c a ng n x pa) Kích th c n ...