Tài liệu tham khảo Bài giảng hợp ngữ gồm 9 chương - Chương 7 Mảng và các lệnh thao tác chuỗi
Nội dung trích xuất từ tài liệu:
Bài giảng hợp ngữ - Chương 7Bài gi ng h p ng Ch ng VII: M ng và các l nh thao tác chu i CH NG VII: M NG VÀ CÁC L NH THAO TÁC CHU I7.1 M ng m t chi u (chu i)7.1.1 Khai báo m ng M ng m t chi u g m m t chu i liên ti p các byte hay word trong b nh . ch ng II ta ã t ng s d ng khai báo:.DATA ChuoiKT DB ‘KHOA CONG NGHE THONG TIN$’ Th c ch t khai báo này s chi m m t vùng 25 ô nh trong n d li u và t vào ócác kí t t ng ng: ‘K’ ‘H’ ‘O’ ‘A’ ‘’ ‘C’ … Cách khai báo nh trên t ng ng v i cách khai báo sau ây:.DATA ChuoiKT DB ‘K’, ‘H’, ‘O’, ‘A’, ‘CONG’, ‘NGHE’, ‘THONG TIN$’ Và c ng t ng ng v i:.DATA ChuoiKT DB 4Bh, 48h, 4Fh, 41h, ‘CONG’, ‘NGHE’, ‘THONG TIN$’ Các khai báo ó c g i là khai báo li t kê, t c là s t o ra trong b nh m t m ng có l ng ph n t xác nh, ng th i kh i t o luôn giá tr cho t ng ph n t . D i ây s c p t i các ph ng pháp khai báo t ng quát.a) Khai báo m ng Byte: M ng Byte là m ng mà m i ph n t có kích th c 1 byte.Cách 1: DB Ví d : A DB 10h, 12h, 30, 40 Khai báo trên t o ra m ng A có 4 ph n t , m i ph n t chi m 1 byte nh .Cách 2: DB DUP (Giá tr kh i t o)Ví d 1: A DB 50 DUP (0) Khai báo trên t o ra m ng A có 50 ph n t , giá tr ban u c a các ph n t b ng 0.Ví d 2: B DB 100 DUP (?) 50Bài gi ng h p ng Ch ng VII: M ng và các l nh thao tác chu i Khai báo trên t o ra m ng B có 100 ph n t , không kh i t o giá tr ban u cho cácph n t .b) Khai báo m ng Word: M ng Word là m ng mà m i ph n t có kích th c 1 word.Cách 1: DW Cách 2: DW DUP (Giá tr kh i t o)Ví d 1: A DW 10h, 12h, 30, 40 Khai báo trên t o ra m ng A có 4 ph n t , m i ph n t dài 16 bít.Ví d 2: B DW 50 DUP (?)7.1.2 Các ph n t c a m ng m t chi u Tên m ng chính là m t bi n ng v i ph n t u t iên c a m ng. Các ph n t ti p t heocó th c xác nh b ng cách l y a ch ph n t ng tr c c ng v i kích th c c anó.Ví d 1: M DB 10, 20, 30, 40 Các ph n t c a m ng có th kí hi u nh sau (chú ý: kích th c c a m i ph n t trong ng này là 1 byte): Kí hi u Giá tr Ph n t 1 M 10 Ph n t 2 M+1 20 Ph n t 3 M+2 30 Ph n t 4 M+3 40Ví d 2: N DW 1, 6, 20, 10, 15 Các ph n t c a m ng có th kí hi u nh sau (chú ý: kích th c c a m i ph n t trong ng này là 2 byte): Kí hi u Giá tr Ph n t 1 N 1 Ph n t 2 N+2 6 Ph n t 3 N+4 20 Ph n t 4 N+6 10 Ph n t 5 N+8 15Ví d 3: Cho m ng A g m 12 ph n t , các ph n t có ki u là Byte. Hãy i ch ph n t utiên và ph n t cu i cùng c a m ng cho nhau.Gi i: Ph n t u tiên là: A Ph n t cu i cùng là: A + 11 MOV AL, A MOV BL, A + 11 51Bài gi ng h p ng Ch ng VII: M ng và các l nh thao tác chu i MOV A, BL MOV A+11, AL7.1.3 Các ch a ch Vi c truy nh p t r c ti p t i các ph n t c a m ng thông qua cách vi t: + (nh trong ph n 7.1.2) gây r t nhi u b t ti n trong l p trình. M t ph ngpháp khác, m m d o h n, là s d ng các thanh ghi ch a ho c ch a a ch c a t ng ph n t . B ng vi c t hay i n i dung các thanh ghi có th truy nh pvào các ph n t khác nhau c a m ng. Các thanh ghi có th c s d ng là BX, BP, SI, DI.a) Dùng thanh ghi ch a a ch c a ph n t : Gi s thanh ghi SI ang ch a a ch o ffset c a m t ô nh nào ó, cách vi t: [SI] str v n i dung c a ô nh ó. N u s d ng các thanh ghi BX, DI và SI ch a a ch o ffset thì a ch segment s c ch a trong DS. Còn n u s d ng thanh ghi BP thì SS s ch a segment.Ví d : Cho m ng sau: A DB 10, 12, 3, 4, 9, 5, 7, 6Hãy tính t ng các ph n t c a m ng (c t t ng vào AL).Gi i: Ta s s d ng thanh ghi SI l n l t tr t i t ng ph n t c a m ng th c hi n phéptính t ng. XOR AL, AL ;Xoá AL chu n b ch a t ng LEA SI, A ;SI ch a a ch offset ph n t u tiên c a m ng MOV CX, 8 ;S l n l p ( m ng có 8 ph n t ) Lap: ...