Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
189,5 KB
Nội dung
KIẾN TRÚC MÁY TÍNH Giảng viên: Ths Phạm Thanh Bình Bộ mơn Kỹ thuật máy tính & mạng http://vn.myblog.yahoo.com/CNTT-wru http://ktmt.wru.googlepages.com Bộ mơn Kỹ thuật máy tính & mạng – Khoa CNTT Kiến trúc máy tính - 2.6.8 Mảng chế độ địa Khai báo mảng chiều Các phần tử mảng chiều Các chế độ địa Các lệnh thao tác với chuỗi Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - Khai báo mảng chiều Mảng chiều gồm chuỗi liên tiếp byte hay word nhớ Ở Chương ta sử dụng khai báo: DATA ChuoiKT DB ‘KHOA CONG NGHE THONG TIN$’ Thực chất khai báo chiếm vùng 25 ô nhớ đoạn liệu đặt vào kí tự tương ứng: Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - ‘K’ ‘H’ ‘O’ ‘A’ ‘’ ‘C’ … Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - Cách khai báo tương đương với cách khai báo sau đây: DATA ChuoiKT DB ‘K’, ‘H’, ‘O’, ‘A’, ‘CONG’, ‘NGHE’, ‘THONG TIN$’ Và tương đương với: DATA ChuoiKT DB 4Bh, 48h, 4Fh, 41h, ‘CONG’, ‘NGHE’, ‘THONG TIN$’ Các khai báo gọi khai báo liệt kê, tức tạo nhớ mảng có số lượng phần tử xác định, đồng thời khởi tạo giá trị cho phần tử Bộ môn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - Các phương pháp khai báo tổng quát Khai báo mảng Byte: Mảng Byte mảng mà phần tử có kích thước byte Cách 1: DB Ví dụ: A DB 10h, 12h, 30, 40 Khai báo tạo mảng A có phần tử, phần tử chiếm byte nhớ Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - Cách 2: DB DUP (Giá trị khởi tạo) Ví dụ 1: A DB 50 DUP (0) Khai báo tạo mảng A có 50 phần tử, giá trị ban đầu phần tử Ví dụ 2: B DB 100 DUP (?) Khai báo tạo mảng B có 100 phần tử, không khởi tạo giá trị ban đầu cho phần tử Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - Khai báo mảng Word: Mảng Word mảng mà phần tử có kích thước word Cách 1: DW Cách 2: DW DUP (Giá trị khởi tạo) Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - Ví dụ 1: A DW 10h, 12h, 30, 40 Khai báo tạo mảng A có phần tử, phần tử dài 16 bít Ví dụ 2: B DW 50 DUP (?) Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - Các phần tử mảng chiều Tên mảng biến ứng với phần tử mảng Các phần tử xác định cách lấy địa phần tử đứng trước cộng với kích thước Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 10 Giải: Do lệnh MOVSW lần chép byte nên phải thực lặp lần, lệnh cụ thể sau: MOV CX, ;Số lần lặp LEA SI, Chuoi1 ;SI chứa offset Chuoi1 LEA DI, Chuoi2 ;DI chứa offset Chuoi2 CLD ;Xoá cờ định hướng: DF = Lap: MOVSW ;Thực lặp lần LOOP Lap Bộ môn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 33 b) Chuyển nhiều lần: Dạng 1: REP MOVSB Lệnh chép nhiều byte liệu từ ô nhớ có địa DS:SI sang nhớ có địa ES:DI, số byte cần chuyển chứa ghi CX Dạng 2: REP MOVSW Lệnh chép nhiều word liệu từ nhớ có địa DS:SI sang nhớ có địa ES:DI, số word cần chuyển chứa ghi CX Bộ môn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 34 Ví dụ: Để thực việc chép nội dung Chuoi1 sang Chuoi2 ví dụ trước, ta viết lại lệnh sau: MOV CX, 10 ;Số byte cần chuyển LEA SI, Chuoi1 ;SI chứa offset Chuoi1 LEA DI, Chuoi2 ;DI chứa offset Chuoi2 CLD ;Xoá cờ định hướng: DF = REP MOVSB Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 35 dùng lệnh: MOV CX, LEA SI, Chuoi1 LEA DI, Chuoi2 CLD REP MOVSW ;Số word cần chuyển ;SI chứa offset Chuoi1 ;DI chứa offset Chuoi2 ;Xoá cờ định hướng: DF = Bộ môn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 36 Lệnh chuyển liệu từ ghi vào chuỗi (Store a String) Lệnh gọi lệnh lưu chuỗi Dạng 1: STOSB Lệnh chuyển nội dung ghi AL (1 byte) tới nhớ có địa ES:DI Dạng 2: STOSW Lệnh chuyển nội dung ghi AX (2 byte) tới ô nhớ có địa ES:DI Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 37 Ví dụ 1: Xét chuỗi sau đây: DATA ChuoiKT DB DUP (?) Hãy nhập kí tự từ bàn phím đặt kí tự vào phần tử chuỗi Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 38 Giải: Ta sử dụng chức số ngắt 21h để nhập kí tự, ghi AL chứa mã ASCII kí tự Muốn chuyển kí tự từ AL vào phần tử chuỗi lệnh STOSB ES:DI phải chứa địa đầu ChuoiKT, điều thực nhờ lệnh sau: LEA DI, ChuoiKT Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 39 TITLE Vi du Chuoi MODEL SMALL STACK 100H DATA ChuoiKT DB DUP (?) CODE MAIN PROC MOV AX, @DATA MOV DS, AX MOV ES, AX ;DS ES chứa segment đoạn liệu MOV AH, ;Chức nhập kí tự ngắt 21h INT 21h LEA DI, ChuoiKT ;DI chứa offset ChuoiKT STOSB ;Chuyển kí tự từ AL vào đầu chuỗi MOV AH, 4Ch ;Kết thúc INT 21h MAIN ENDP END MAIN Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 40 Ví dụ 2: Nhập chuỗi 10 kí tự từ bàn phím Giải: Để nhập 10 kí tự cất vào chuỗi nhớ ta sử dụng phương pháp ví dụ Có số điểm khác biệt sau: + Phải có vịng lặp với số lần lặp 10 + Sau lệnh lưu chuỗi (STOSB) DI phải tăng lên để trỏ tới ô nhớ Điều thực nhờ lệnh xoá cờ định hướng (CLD) Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 41 TITLE Vi du MODEL SMALL STACK 100H DATA ChuoiKT DB 10 DUP (?) CODE MAIN PROC MOV AX, @DATA MOV DS, AX MOV ES, AX ;DS ES chứa segment đoạn liệu MOV CX, 10 ;Số lần lặp 10 LEA DI, ChuoiKT ;DI chứa offset ChuoiKT CLD ;Xoá cờ định hướng: DF = Lap: MOV AH, ;Chức nhập kí tự ngắt 21h INT 21h STOSB ;Chuyển kí tự từ AL vào đầu chuỗi ;DI tự động tăng lên LOOP Lap MOV AH, 4Ch ;Kết thúc INT 21h MAIN ENDP Bộ MAIN môn Kỹ thuật máy tính & END mạng – Kiến trúc máy tính - 42 Lệnh chuyển liệu từ chuỗi vào ghi (Load a String) Lệnh gọi lệnh nạp chuỗi Dạng 1: LODSB Lệnh chuyển byte liệu từ nhớ có địa DS:SI vào ghi AL Dạng 2: LODSW Lệnh chuyển word liệu từ nhớ có địa DS:SI vào ghi AX Bộ môn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 43 Ví dụ: Xét chuỗi sau đây: DATA ChuoiKT DB ‘Viet Nam’ Hãy hiển thị chuỗi hình Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 44 Giải: Vì chuỗi không kết thúc dấu ‘$’ nên chuỗi chức số ngắt 21h Ta cho kí tự chuỗi chức số ngắt 21h (các tham số: AH = 2, DL = Mã ASCII kí tự cần hiển thị) Chuỗi có kí tự nên cần lần lặp Đầu tiên cần chuyển kí tự từ chuỗi vào ghi AL lệnh LODSB, sau chuyển từ AL sang DL, gọi chức số ngắt 21h Bộ môn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 45 TITLE Vi du MODEL SMALL STACK 100H DATA ChuoiKT DB ’Viet Nam’ CODE MAIN PROC MOV AX, @DATA MOV DS, AX ;DS chứa segment đoạn liệu MOV CX, ;Số lần lặp LEA SI, ChuoiKT ;SI chứa offset ChuoiKT CLD ;Xoá cờ định hướng: DF = Lap: LODSB ;Chuyển kí tự từ chuỗi vào AL ;SI tự động tăng lên (để trỏ tới kí tự tiếp theo) MOV DL, AL ;Chuyển kí tự vào DL MOV AH, ;Hiển thị kí tự INT 21h LOOP Lap MOV AH, 4Ch ;Kết thúc INT 21h MAIN ENDP Bộ môn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 46 END MAIN Hết Phần 2.4 Bộ môn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 47 ... thuật máy tính & mạng – Kiến trúc máy tính - 15 Ví dụ: Cho mảng sau: A DB 10, 12, 3, 4, 9, 5, 7, Hãy tính tổng phần tử mảng (cất tổng vào AL) Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính. .. đặt vào kí tự tương ứng: Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - ‘K’ ‘H’ ‘O’ ‘A’ ‘’ ‘C’ … Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - Cách khai báo tương đương với cách... 21h MAIN ENDPKỹ thuật máy tính & mạng – Bộ mơn Kiến trúc máy tính - 31 END MAIN Ví dụ 2: Làm lại ví dụ cách dùng lệnh MOVSW Bộ mơn Kỹ thuật máy tính & mạng – Kiến trúc máy tính - 32 Giải: Do lệnh