Giáo trình Kiến trúc máy tính (Nghề Kỹ thuật sửa chữa, lắp ráp máy tính Trình độ Trung cấp)

92 2 0
Giáo trình Kiến trúc máy tính (Nghề Kỹ thuật sửa chữa, lắp ráp máy tính  Trình độ Trung cấp)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 SCMT-TC-MH12-KTMT TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Chìa khóa để hướng tới xã hội thông tin phát triển công nghệ thông tin (CNTT), nhiên để phát triển CNTT lâu dài bền vững, đào tạo kiến thức nhất, mà nội dung đào tạo phải trang bị sinh viên kiến thức tảng, sở tạo cho sinh viên phát huy tính sáng tạo, chủ động việc tiếp thu nghiên cứu, ứng dụng CNTT Do đó, trường đào tạo, sinh viên phải trang bị kiến thức tảng CNTT thể thiếu mơn học Kiến trúc máy tính Giáo trình cung cấp cho sinh viên kiến thức Kiến trúc máy tính, tổ chức hoạt động vi xử lý, thành phần phần hệ thống máy tính biện pháp kĩ thuật Giáo trình bao gồm chương: Chương 1: Tổng quan Chương 2: Kiến trúc phần mềm xử lý Chương 3: Tổ chức xử lý Chương 4: Bộ nhớ Chương 5: Thiết bị nhập xuất Chương 6: Ngơn ngữ Assembly Trong chương có giới thiệu mục tiêu, nội dung câu hỏi tập Giáo trình xem nguồn tài liệu cung cấp thông tin cho giáo viên giảng dạy, đồng thời tài liệu học tập cho sinh viên Vì thời gian có hạn lần giáo trình soạn thảo nên khơng thể tránh khỏi thiếu sót Rất mong nhận ý kiến đóng góp bạn đọc Cần Thơ, ngày 20 tháng năm 2018 Tham gia biên soạn Châu Mũi Khéo MỤC LỤC TUYÊN BỐ BẢN QUYỀN LỜI CẢM ƠN MỤC LỤC MƠN HỌC: KIẾN TRÚC MÁY TÍNH CHƯƠNG 1:TỔNG QUAN Các hệ máy tính 1.1 Thế hệ (1946-1957) 1.2 Thế hệ thứ hai (1958-1964) 1.3 Thế hệ thứ ba (1965-1971) 1.4 Thế hệ thứ tư (1972) 1.5 Khuynh hướng Phân loại máy tính 2.1 Các siêu máy tính (Super Computer): 2.2 Các máy tính lớn (Mainframe): .9 2.3 Máy tính mini (Minicomputer): .9 2.4 Máy vi tính (Microcomputer) Thành máy tính, qui luật Moore phát triển máy tính .10 Thơng tin mã hóa thơng tin .12 4.1 Khái niệm thông tin 12 4.2 Lượng thơng tin mã hố thơng tin 12 4.3 Hệ thống số 13 4.4 Biểu diễn thông tin .15 4.4.1 Số nguyên có dấu .15 4.5 Cách biểu diễn số thập phân 17 Biểu diễn ký tự .18 Chương 2: KIẾN TRÚC PHẦN MỀM CỦA BỘ XỬ LÝ .21 Các thành phần máy tính 21 1.1 Bộ xử lý trung tâm (CPU) 21 1.2 Bo mạch chủ (Mainboard) 22 1.3 Bộ nhớ 24 1.4 Thiết bị lưu trữ .24 1.5 Thiết bị nhập xuất 25 Định nghĩa kiến trúc máy tính 25 Tập lệnh 26 3.1 Tập ghi (của vi xử lý 8086) 26 Kiến trúc RISC .29 4.1 Giới thiệu .29 4.2 Các kiểu định vị xử lý .31 Toán hạng .32 Chương 3: TỔ CHỨC BỘ XỬ LÝ 34 Đường liệu 34 Bộ điều khiển 36 2.1 Bộ điều khiển mạch điện tử 36 2.2 Bộ điều khiển vi chương trình: 37 Diễn tiến thi hành lệnh mã máy 37 Ngắt (INTERRUPT) 39 Kỹ thuật ống dẫn (PIPELINE) .39 5.1 Ống dẫn 39 5.2 Khó khăn kỹ thuật ống dẫn 40 Siêu ống dẫn, Ống dẫn, siêu vô hướng .42 Chương 4: BỘ NHỚ 44 Các loại nhớ .44 1.1 Bộ nhớ 44 Các cấp nhớ .49 Truy cập liệu nhớ 50 3.1 Truy nhập nhớ thiết bị vào/ 51 3.2 Truy nhập nhớ .51 CÂU HỎI ÔN TẬP VÀ BÀI TẬP CHƯƠNG .57 Chương 5:THIẾT BỊ NHẬP XUẤT 58 Đĩa từ .58 Đĩa quang 60 Các loại thẻ nhớ 61 Băng từ 62 Các chuẩn BUS .62 An toàn liệu lưu trữ 64 CÂU HỎI ÔN TẬP VÀ BÀI TẬP CHƯƠNG .67 Chương 6: NGÔN NGỮ ASSEMBLY .68 Tổng quan .68 1.1 Cấu trúc chung chương trình 68 1.2 Biến khai báo biến 73 1.3 Các chế độ địa .75 Các Lệnh 77 2.1 Các lệnh tính tốn 77 2.2 Lệnh nhập xuất 78 Các lệnh điều khiển 78 3.1 Các lệnh điều kiện, lặp 78 3.2.Lệnh chuyển hướng chương trình 85 Ngăn xếp thủ tục 88 4.1 Ngăn xếp (stack) 88 4.2 Chương trình 89 4.3 Truyền tham số cho chương trình 90 CÂU HỎI ÔN TẬP VÀ BÀI TẬP CHƯƠNG .91 TÀI LIỆU THAM KHẢO 92 MÔN HỌC: KIẾN TRÚC MÁY TÍNH Mã số mơn học: MH 12 Thời gian thực môn học: 45 (Lý thuyết 15 giờ; Thực hành, thí nghiệm, thảo luận, tập: 28 giờ; Kiểm tra: giờ) I VỊ TRÍ, TÍNH CHẤT MƠN HỌC: - Vị trí: + Mơn học bố trí sau học sinh học xong môn học chung, môn học sở chuyên ngành đào tạo chun mơn nghề - Tính chất: + Là mơn học chun ngành bắt buộc II MỤC TIÊU MƠN HỌC: - Về kiến thức: Biết lịch sử máy tính, hệ máy tính cách phân loại máy tính Hiểu thành phần kiến trúc máy tính, tập lệnh Các kiểu kiến trúc máy tính: mơ tả kiến trúc, kiểu định vị Hiểu cấu trúc xử lý trung tâm: tổ chức, chức nguyên lý hoạt động phận bên xử lý Mô tả diễn tiến thi hành lệnh mã máy số kỹ thuật xử lý thông tin: ống dẫn, siêu ống dẫn, siêu vô hướng Hiểu chức nguyên lý hoạt động cấp nhớ Hiểu phương pháp an toàn liệu thiết bị lưu trữ ngồi - Về kỹ năng: Lập trình tập lệnh Assembly - Về lực tự chủ trách nhiệm: Tự tin tiếp cận cơng nghệ phần cứng III NỘI DUNG MƠN HỌC: Nội dung tổng quát phân phối thời gian: Thời gian Số Tên chương mục Tổng Lý Thực Kiểm TT số thuyết hành tra* I Tổng quan 4 Các hệ máy tính 1 Phân loại máy tính 1 Thành máy tính 1 Thành máy tính 1 II III Kiến trúc phần mềm xử lý Thành phần máy tính Định nghĩa kiến trúc máy tính Tập lệnh Thủ tục Toán hạng Tổ chức xử lý Đường liệu 1 1 11 0 1 Bộ điều khiển Diễn tiến thi hành lệnh mã máy Ngắt Kỹ thuật ống dẫn Ống dẫn, siêu ống dẫn, siêu vô hướng 2 2 1 1 1 1 IV Bộ nhớ Các loại nhớ Các cấp nhớ Cách truy xuất liệu nhớ Hiểu nhớ Cache cách tổ chức nhớ Cache CPU 10 2 3 1 1 1 V Thiết bị nhập xuất Đĩa từ Đĩa quang Các loại thẻ nhớ Băng tử Các chuẩn BUS An toàn liệu lưu trữ 10 2 1 2 1 0 1 VI Ngôn ngữ Assembly Tổng quan Các lệnh Các lệnh điều khiển Ngăn xếp thủ tục 1 0 0 1 Cộng 45 15 28 CHƯƠNG 1:TỔNG QUAN Mã chương MH 12/01 Mục tiêu: - Biết lịch sử phát triển máy tính - Hiểu thành phần máy vi tính - Biết thành tựu máy tính - Hiểu khái niệm thông tin -Hiểu cách biến đổi hệ thống số, bảng mã thông dụng dùng để biểu diễn ký tự Các hệ máy tính Sự phát triển máy tính mơ tả dựa tiến công nghệ chế tạo linh kiện máy tính như: xử lý, nhớ, ngoại vi,…Ta nói máy tính điện tử số trải qua bốn hệ liên tiếp Việc chuyển từ hệ trước sang hệ sau đặc trưng thay đổi công nghệ 1.1 Thế hệ (1946-1957) Hình 1- Thế hệ (1946-1957) ENIAC (Electronic Numerical Integrator and Computer) máy tính điện tử số Giáo sư Mauchly người học trò Eckert Đại học Pennsylvania thiết kế vào năm 1943 hoàn thành vào năm 1946 Đây máy tính khổng lồ với thể tích dài 20 mét, cao 2,8 mét rộng vài mét ENIAC bao gồm: 18.000 đèn điện tử, 1.500 công tắc tự động, cân nặng 30 tấn, tiêu thụ 140KW Nó có 20 ghi 10 bit (tính tốn số thập phân) Có khả thực 5.000 phép tốn cộng giây Cơng việc lập trình tay cách đấu nối đầu cắm điện dùng ngắt điện Giáo sư toán học John Von Neumann đưa ý tưởng thiết kế máy tính IAS (Princeton Institute for Advanced Studies): chương trình lưu nhớ, điều khiển lấy lệnh biến đổi giá trị liệu phần nhớ, làm toán luận lý (ALU: Arithmetic And Logic Unit) điều khiển để tính tốn liệu nhị phân, điều khiển hoạt động thiết bị vào Đây ý tưởng tảng cho máy tính đại ngày Máy tính cịn gọi máy tính Von Neumann Vào năm đầu thập niên 50, máy tính thương mại đưa thị trường: 48 hệ máy UNIVAC I 19 hệ máy IBM 701 bán 1.2 Thế hệ thứ hai (1958-1964) Công ty Bell phát minh transistor vào năm 1947 hệ thứ hai máy tính đặc trưng thay đèn điện tử transistor lưỡng cực Tuy nhiên, đến cuối thập niên 50, máy tính thương mại dùng transistor xuất thị trường Kích thước máy tính giảm, rẻ tiền hơn, tiêu tốn lượng Vào thời điểm này, mạch in nhớ xuyến từ dùng Ngôn ngữ cấp cao xuất (như FORTRAN năm 1956, COBOL năm 1959, ALGOL năm 1960) hệ điều hành kiểu (Batch Processing) dùng Trong hệ điều hành này, chương trình người dùng thứ chạy, xong đến chương trình người dùng thứ hai tiếp tục 1.3 Thế hệ thứ ba (1965-1971) Thế hệ thứ ba đánh dấu xuất mạch kết (mạch tích hợp - IC: Integrated Circuit) Các mạch kết độ tích hợp mật độ thấp (SSI: Small Scale Integration) chứa vài chục linh kiện kết độ tích hợp mật độ trung bình (MSI: Medium Scale Integration) chứa hàng trăm linh kiện mạch tích hợp Mạch in nhiều lớp xuất hiện, nhớ bán dẫn bắt đầu thay nhớ xuyến từ Máy tính đa chương trình hệ điều hành chia thời gian dùng 1.4 Thế hệ thứ tư (1972) Thế hệ thứ tư đánh dấu IC có mật độ tích hợp cao (LSI: Large Scale Integration) chứa hàng ngàn linh kiện Các IC mật độ tích hợp cao (VLSI: Very Large Scale Integration) chứa 10 ngàn linh kiện mạch Hiện nay, chip VLSI chứa hàng triệu linh kiện Với xuất vi xử lý (microprocessor) chứa phần thực phần điều khiển xử lý, phát triển công nghệ bán dẫn máy vi tính chế tạo khởi đầu cho hệ máy tính cá nhân Các nhớ bán dẫn, nhớ cache, nhớ ảo dùng rộng rãi Các kỹ thuật cải tiến tốc độ xử lý máy tính khơng ngừng phát triển: kỹ thuật ống dẫn, kỹ thuật vô hướng, xử lý song song mức độ cao,… 1.5 Khuynh hướng Việc chuyển từ hệ thứ tư sang hệ thứ chưa rõ ràng Người Nhật tiên phong chương trình nghiên cứu đời hệ thứ máy tính, hệ máy tính thơng minh, dựa ngơn ngữ trí tuệ nhân tạo LISP PROLOG, giao diện người - máy thông minh Đến thời điểm này, nghiên cứu cho sản phẩm bước đầu gần (2004) mắt sản phẩm người máy thông minh gần giống với người nhất: ASIMO (Advanced Step Innovative Mobility: Bước chân tiên tiến đổi chuyển động) Với hàng trăm nghìn máy móc điện tử tối tân đặt thể, ASIMO lên/xuống cầu thang cách uyển chuyển, nhận diện người, cử hành động, giọng nói đáp ứng số mệnh lệnh người Thậm chí, bắt chước cử động, gọi tên người cung cấp thông tin sau bạn hỏi, gần gũi thân thiện Hiện có nhiều cơng ty, viện nghiên cứu Nhật th Asimo tiếp khách hướng dẫn khách tham quan như: Viện Bảo tàng Khoa học lượng Đổi quốc gia, hãng IBM Nhật Bản, Công ty điện lực Tokyo Hãng Honda bắt đầu nghiên cứu ASIMO từ năm 1986 dựa vào nguyên lý chuyển động hai chân Cho tới nay, hãng chế tạo 50 robot ASIMO Các tiến liên tục mật độ tích hợp VLSI cho phép thực mạch vi xử lý ngày mạnh (8 bit, 16 bit, 32 bit 64 bit với việc xuất xử lý RISC năm 1986 xử lý siêu vơ hướng năm 1990) Chính xử lý giúp thực máy tính song song với từ vài xử lý đến vài ngàn xử lý Điều làm chuyên gia kiến trúc máy tính tiên đốn hệ thứ hệ máy tính xử lý song song Bảng 1-1 Các hệ máy tính Thế hệ Năm Kỹ thuật 1946-1957 Đèn điện tử 1958-1964 Transistors 1965-1971 1972 Sản phẩm Máy tính điện tử tung thị trường Máy tính rẻ tiền Máy tính mini Hãng sản xuất máy tính IBM 701 UNIVAC Intel,Burroughs 6500, NCR, CDC 6600, Honeywell Mach IC 50 hãng mới: DEC PDP-11, Data general ,Nova LSI - VLSI Máy tính cá Apple II, IBM-PC, Appolo nhân trạm DN 300, Sun làm việc Xử lý song Máy tính đa xử Sequent … Thinking Machine song lý Đa máy Inc Honda, Casio tính Phân loại máy tính Thơng thường máy tính phân loại theo tính kỹ thuật giá tiền 2.1 Các siêu máy tính (Super Computer): Là máy tính đắt tiền tính kỹ thuật cao Giá bán siêu máy tính từ vài triệu USD Các siêu máy tính thường máy tính vectơ hay máy tính dùng kỹ thuật vơ hướng thiết kế để tính tốn khoa học, mơ tượng Các siêu máy tính thiết kế với kỹ thuật xử lý song song với nhiều xử lý (hàng ngàn đến hàng trăm ngàn xử lý siêu máy tính) 2.2 Các máy tính lớn (Mainframe): Là loại máy tính đa dụng Nó dùng cho ứng dụng quản lý tính toán khoa học Dùng kỹ thuật xử lý song song có hệ thống vào mạnh Giá máy tính lớn từ vài trăm ngàn USD đến hàng triệu USD 2.3 Máy tính mini (Minicomputer): Là loại máy cỡ trung, giá máy tính mini từ vài chục USD đến vài trăm ngàn USD 2.4 Máy vi tính (Microcomputer) Là loại máy tính dùng vi xử lý, giá máy vi tính từ vài trăm USD đến vài ngàn USD 10 Thành máy tính, qui luật Moore phát triển máy tính Hình 1-2 cho thấy diễn biến thành tối đa máy tính Thành tăng theo hàm số mũ, độ tăng trưởng máy vi tính 35% năm, cịn loại máy khác, độ tăng trưởng 20% năm Điều cho thấy tính máy vi tính vượt qua loại máy tính khác vào đầu thập niên 90 Hình 1- Đánh giá thành máy tính Máy tính dùng thật nhiều xử lý song song thích hợp phải làm tính thật nhiều Sự tăng trưởng theo hàm số mũ công nghệ chế tạo transistor MOS nguồn gốc thành máy tính Hình 1-4 cho thấy tăng trưởng tần số xung nhịp xử lý MOS Độ tăng trưởng tần số xung nhịp xử lý tăng gấp đôi sau hệ độ trì hỗn cổng / xung nhịp giảm 25% cho năm Sự phát triển cơng nghệ máy tính đặc biệt phát triển vi xử lý máy vi tính làm cho máy vi tính có tốc độ vượt qua tốc độ xử lý máy tính lớn Hình 1-3 Sự phát triển xử lý Intel 78 MOV AL,10h MOV BL,5h MUL BL Vì tốn hạng nguồn ghi BL, nên kết lấy AX AX=50h Trong trường hợp mn nhân số có dấu, ta sử dụng lệnh IMUL có dạng lệnh lệnh MUL d DIV: Unsigned Divide (chia hai số khơng có dấu) Cú pháp DIV nguồn Nguồn số bit: AX/nguồn số bị chia phải số không dấu 16 bit AX sau chia thương chứa AL số dư chứa AH Nguồn số 16 bit:DX: AX/nguồn số bị chia phải số không dấu đặt cặp DX:AX sau chia thương chứa AX số dư chứa DX Nguồn =0 (chia cho 0) kết lớn FFh, FFFFh gọi ngắt INT Trong trường hợp muốn chia số có dấu, ta sử dụng lệnh IDIV có dạng lệnh lệnh DIV 2.2 Lệnh nhập xuất a Lệnh IN: nhập vào từ cổng byte hay word Cú pháp IN thanhchứa, cổng Nếu chứa AL liệu bit đưa vào có giá trị địa cổng Nếu chứa AX liệu 16 bit đưa vào từ cổng có giá trị địa cổng +1 Địa cổng khoảng 00h – FFh b Lệnh OUT: xuất cổng byte word Cú pháp OUT địa_chỉ_cổng, Acc Các lệnh điều khiển Mục đích: - Hiểu cú pháp sử dụng lệnh điều khiển 3.1 Các lệnh điều kiện, lặp a Cấu trúc IF… THEN… Đây cấu trúc điều khiển rẽ nhánh chương trình với việc kiểm tra điều kiện Nếu điều kiện thỏa mãn thực cơng việc Nếu điều kiện khơng thỏa mãn bỏ qua công việc Điều kiện Sai Công việc 79 Cú pháp: IF điều_kiện THEN Cơng_việc Ví dụ: Viết đoạn chương trình thực nhập vào kí tự Nếu kí tự ‘A’ hiển thị dòng Giải: MOV AH,1 ;nhập vào từ bàn phím kí tự, kí tự nằm AL INT 21h CMP AL,41h JNE kethuc PUSH AX ;cắt tạm kí tự vào ngăn xếp MOV Ah,2 ;đưa trỏ MOV DL,13 ;xuống dòng INT 21h MOV DL,10 ;về đầu dòng INT 21h POP DX ; lấy kí tự đưa trực tiếp vào DL INT 21h ;in hình Ketthuc: MOV AH,4Ch INT 21h Đoạn chương trình thực cho phép người sử dụng nhập vào từ bàn phím kí tự Sau đó, so sánh với mã ASCII ‘A’ Nếu khơng thực lệnh sau lệnh “JNE ketthuc” kết thúc Nếu không, máy bỏ qua lệnh kết thúc chương trình hàm ngắt 4Ch ngắt 21h b Cấu trúc IF …THEN …ELSE Trong thực tế, thường đưa điều kiện Nếu trường hợp thỏa mãn thực cơng việc Ngược lại, khơng thực cơng việc khác Điều kiện Công việc Cú pháp: Công việc 80 IF điều_kiện THEN Cơng_việc_1 ELSE Cơng_việc_2 END_IF Ví dụ: Viết đoạn chương trình hợp ngữ thực nhập vào từ bàn phím kí tự Nếu kí tự nhập vào có mã ASCII nhỏ mã ASCII số đưa hình thơng báo “kí tự đứng trước ‘1’ bảng mã”, ngược lại, đưa hình thơng báo “kí tự đứng sau ‘1’ bảng mã” Giải: đoạn chương trình thể sau: *Giả thiết: thơng báo “kí tự đứng trước ‘1’ bảng mã” lưu biến truoc, thơng báo báo “kí tự đứng sau ‘1’ bảng mã” lưu biến sau Đoạn chương trình viết sau: ; nhập kí tự từ bàn phím Mov al,1 Int 21h ; bắt đầu cấu trúc CMP al, ‘1’ ;so sánh kí tự nhập vào với ‘1’ JL then Mov ah,9 Lea dx,sau Int 21h Jmp end_if Then: Mov ah,9 Lea dx, truoc Int 21h End_if c Cấu trúc rẽ nhánh Case…of Là cấu trúc đa nhánh Nó kiểm tra ghi, biến hay giá trị riêng rẽ miền giá trị Cú pháp: Case biểu_thức Giá_trị1: công_việc_1 Giá_trị2 :công_việc_2 ……………………… Giá_trịn :công_việc_n End case Như vậy,nếu biểu thức giá trị nào, cơng việc tương ứng thực 81 Biểu thức Công việc_1 Công việc_1 Công việc_1 Như vậy, biểu thức giá trị nào, cơng việc tương ứng thực Ví dụ: Viết đoạn chương trình thực nhập vào kí tự Nếu kí tự đứng trước ‘A’ bảng mã ASCII đưa thơng báo kí tự đứng trước ‘A’ Nếu kí tự nhập vào ‘A’ đưa thơng báo kí tự ‘A’ Nếu đứng sau ‘A’ đưa thơng báo kí tự đứng sau ‘A’ Giải: Giải thiết biến truoc, dung, sau chứa nội dung chuỗi thơng báo cần đưa Ta thực đoạn chương trình sau: ;nhập vào kì tự Mov ah,1 Int 21h ;Case …of CMP AL,’A’ JL L1 JE L2 JG L3 L1: Mov ah,9 Lea dx, truoc Int 21h Jmp end_ L2: Mov ah,9 Lea dx, dung Int 21h Jmp end_ L3: Mov ah,9 Lea dx, sau Int 21h 82 end_: d Cấu trúc rẽ nhánh với điều kiện kép Là dạng cấu trúc rẽ nhánh mà đó, điều kiện kết hợp hai hay nhiều điều kiện khác Điều kiện kép có dạng * Điều kiện kết hợp AND Là dạng cấu trúc rẽ nhánh mà có nhiều điều kiện kết hợp Tất điều kiện thỏa mãn cơng việc thực Ngược lại, thực cơng việc khác khơng thực Ví dụ: Viết đoạn chương trình thực nhập vào từ bàn phím kí tự kiểm tra xem phím nhập vào có phải số không Giải: Mov ah,1 Int 21h Cmp AL,’0’ JL END_IF Cmp AL,’9’ JG END_IF ;then Mov AH,9 Lea DX,So Int 21h END_IF: MOV Ah,4Ch INT 21h * Điều kiện kết hợp OR Là dạng cấu trúc rẽ nhánh mà có nhiều điều kiện kết hợp Tất điều kiện thỏa mãn cơng việc thực Ngược lại, tất điều kiện khơng thỏa mãn thực cơng việc khác khơng thực Ví dụ: Viết đoạn chương trình thực nhập vào từ bàn phím kí tự kiểm tra xem phím nhập vào có phải ‘Y’ ‘y’ khơng Giải: Giả thiết có biến yeucau chứa thơng báo nhập vào; dung chứa thơng báo nhập kí tự nhập vào ‘Y’ ‘y’ Đoạn chương trình viết sau: Mov ah,9 Lea DX,yeucau Int 21h Mov ah,1 Int 21h Cmp AL,’Y’ JE THEN Cmp AL,’y’ JE THEN Jmp END_IF THEN: Mov AH,9 Lea DX,dung Int 21h END_IF: 83 MOV AH,4Ch INT 21h e Cấu trúc for…to…do Đây dạng cấu trúc lặp với số lần lặp xác định Cú pháp: FOR số_lần_lặp DO công_việc Đầu tiên, gán cho ghi đếm CX giá trị số lần lặp Sau đó, thực công việc Sau lần lặp, giảm giá trị ghi CX đơn vị kiểm tra với Nếu chưa tiếp tục thực công việc …cho tới CX=0 Trong tập lệnh vi xử lý 8086 tồn lệnh sử dụng phù hợp cấu trúc Đó lệnh LOOP Lệnh tự động giảm ghi CX đơn vị sau so sánh CX với CX = số lần lặp Công việc CX = CX -1 sai CX = Ví du: Viết đoạn chương trình thực nhập vào từ bàn phím kí tự Sau cho hiển thị 200 lần hình Giải: MOV AH,9 LEA DX, yeucau INT 21h MOV CX,200 MOV AH,1 INT 21h PUSH AX MOV AH,2 MOV DL,13 INT 21h MOV DL,10 INT 21h 84 POP AX MOV AH,2 FOR: MOV DL,AL INT 21h LOOP FOR f Cấu trúc while…do… Là cấu trúc lặp phụ thuộc vào điều kiện Cú pháp: WHILE điều_kiện DO Công_việc Công _việc thực điều kiện trở nên sai Điều kiện sai Cơng việc Ví dụ: Viết đoạn chương trình thực đếm số kí tự nhập vào từ bàn phím Giải: XOR CX,CX MOV AH,1 WHILE: INT 21h CMP AL,13 JE END_WHILE INC CX JMP WHILE END_ WHILE: MOV AH,4Ch INT 21h g Cấu trúc REPEAT …UNTIL… Cú pháp: REPEAT công_việc UNTIL điều_kiện 85 Đây cấu trúc lặp mà cơng_viêc thực trước, sau kiểm tra điều_kiện Nếu điều_kiện kết thúc trình lặp Ngược lại, điều_kiện cịn sai quay trở lại thực cơng việc… Cơng việc sai Điều kiện Ví dụ: Viết đoạn chương trình thực nhập vào từ bàn phím kí tự kết thúc việc nhấn phím ENTER Giải: MOV AH,9 LEA DX,yeucau INT 21h REPEAT: MOV AH,1 INT 21h CMP AL,13 JNE REPEAT MOV AH,4Ch INT 21h 3.2.Lệnh chuyển hướng chương trình a Nhảy có điều kiện Cú pháp: Jxxx nhãn_đích Nếu điều kiện nhảy thoả mãn nhảy đến nhãn_đích thi hành lệnh Nhãn trước sau Trước không 126 byte, sau không 127 byte Bảng lệnh nhảy Nhảy có dấu Kí hiệu Chức điều kiện nhảy 86 Nhảy có dấu Jg/jnle Jge/jnl Jl/jnge Jle/jng nhảy không dấu Ja/jnbe Jae/jnb Jb/jnae nhảy điều kiện đơn Je/jz nhảy lớn nhảy không nhỏ hay nhảy lớn hay nhảy không nhỏ nhảy nhỏ nhảy không lớn hay nhảy nhỏ hay nhảy không lớn Zf = 0, sf = 0f nhảy lớn nhảy không nhỏ hay nhảy lớn hay nhảy không nhỏ nhảy nhỏ nhảy không lớn hay Cf = zf = Sf = 0f Sf 0f Zf = hay sf = 0f Cf = Cf = nhảy Zf = nhảy Jne/jnz nhảy không Zf = nhảy không b Nhảy không điều kiện Cú pháp: JMP nhãn_đích Nhãn đích nằm đoạn với JMP, vượt xa 126 byte lệnh nhảy có điều kiện c Lệnh logic Trong nhóm ta quan tâm đến lệnh sau:AND, OR,XOR,NOT * AND Cú pháp AND đích,nguồn Đích, nguồn phải có điều kiện: - độ dài - đồng thời ô nhớ, ghi đoạn Tác dụng: thường dùng để che hay giữ lại vài bit tốn hạng đích Ví dụ: AND AX,0Fh * OR Cú pháp OR đích,nguồn Đích, nguồn phải có điều kiện: - độ dài - đồng thời ô nhớ, ghi đoạn 87 Tác dụng: thường dùng để thiết lập vài bit tốn hạng đích cách cộng logic tốn hạng với tốn hạng tức thời mà bit có vị trí tương ứng với bít cần lập Ví dụ: OR AL,BL OR AL,0F h * NOT Cú pháp NOT toanhang Tác dụng: lấy phủ định tốn hạng ( dùng để dảo bít tốn hay hạng lấy bù1) * XOR : (loại trừ toán hạng) Cú pháp XOR toanhang, toanhang Tác dụng: dùng để xóa ghi Ví dụ: XOR AX,AX ;xóa ghi AX d Nhóm lệnh dịch chuyển quay * SHL : Shift – left (dịch trái) Cú pháp SHL đích,CL Tác dụng: dịch bit tốn hạng đích sang trái CL vị trí, giá trị đưa vào bên phải tốn hạng đích, cịn bít MSB đưa vào CF CF 15 * SHR: Shift – Right; dịch phải Cú pháp SHR đích,CL Tác dụng: dịch bit tốn hạng đích sang phải CL vị trí, giá trị đưa vào bít MSB cịn giá trị bit LSB chuyển vào cờ CF 15 CF * ROL: Rotation Left- quay trái Cú pháp ROL đích,CL Dịch bit sang bên trái Bit MSB đưa LSB cờ CF muốn quay nhiều lần chứa CL MSB CF MSB 88 * ROR: Rotation Right – quay phải Cú pháp ROR đích, CL Dịch sang bên phải bit LSB đưa vào MSB cờ CF muốn quay nhiều lần chứa CL LSB LSB 15 Ngăn xếp thủ tục CF 4.1 Ngăn xếp (stack) a Định nghĩa ngăn xếp: Ngăn xếp tổ chức nhớ cho ta đọc từ đỉnh ngăn xếp viết từ vào đỉnh ngăn xếp Địa đỉnh ngăn xếp chứa ghi đặc biệt gọi trỏ ngăn xếp SP (Stack Pointer) Ứng với cấu trúc ngăn xếp, người ta có lệnh viết vào ngăn xếp PUSH lệnh lấy khỏi ngăn xếp POP Các lệnh vận hành sau: - Cho lệnh PUSH SP := SP +1 M (SP) := Ri (Ri ghi cần viết vào ngăn xếp) - Cho lệnh POP Ri := M(SP) (Ri ghi, nhận từ lấy khỏi ngăn xếp) SP := SP -1 Trong xử lý RISC, việc viết vào lấp khỏi ngăn xếp dùng lệnh bình thường Ví dụ ghi R30 trỏ ngăn xếp việc viết vào ngăn xếp thực lệnh: ADDI R30, R30, ; tăng trỏ ngăn xếp lên từ dài 32 bit STORE Ri, (R30) ; Viết Ri vào đỉnh ngăn xếp Việc lấy khỏi ngăn xếp thực lệnh : LOAD Ri, (R30) ; lấy số liệu đỉnh ngăn xếp nạp vào Ri SUBI R30, R30,4 ; giảm trỏ ngăn xếp bớt b Đặc tả ngăn xếp - Che dấu thông tin:khi sử dụng lớp stack khơng cần biết lưu trữ nhớ phương thức thực sao.Đây vấn đề cho dấu thơng tin - Tính khả thi hiệu ứng dụng:Tuy ứng dụng cần phải độc lập với thực cấu trúc liệu việc chọn cách thực ảnh hưởng đến tính khả thi hiệu ứng dụng.Chúng ta cần hiểu ưu nhược điểm cách thực cấu trúc liệu để lựa chọn cho phù hợp với tính chất ứng dụng - Tính sáng chương trình:ưu điểm khác che giấu thơng tin tính sáng chương trình.Những tên gọi quen thuộc dành cho thao tác cấu trúc liệu giúp hình dung rõ ràng giải thuật chương trình.Chẳng hạn thao tác ngăn xếp,người ta thường quen dùng từ:đầy-push;lấy-pop; 89 - Thiết kế từ xuống:sự tách rời việc sử dụng cấu trúc liệu cách thực cịn giúp thực hiên tốt trình thiết kế từ xuống cho cấu trúc liệu cho chương trình ứng dụng 4.2 Chương trình Nhằm mục đích làm cho chương trình ngắn gọn dễ hiểu, thông thường người ta thực chia nhỏ chương trình thành Module khác nhau, Module thực một khối công việc định Mỗi Module gọi chương trình Trong lập trình hợp ngữ thơng thường người ta sử dụng loại chương trình thủ tục Cấu trúc chương trình loại thực sau: a Cấu trúc chương trình PROC [kiểu] ; thân chương trình ;…………………… RET ENDP Trong đó: + tên ctc: tên chương trình mà người sử dụng tự đặt theo quy định đặt tên ASSEMBLY + PROC, ENDP: lệnh giả thực để khai báo bắt đầu kết thúc chương trình + kiểu: NEAR FAR NEAR (mặc định) có nghĩa dòng lệnh gọi thủ tục đoạn với thủ tục FAR có nghĩa dịng lệnh gọi thủ tục đoạn khác b Ví dụ Xoa_mh PROC MOV AH,0 MOV AL,3 INT 10h RET Xoa_mh ENDP c Một số ý: Tránh trường hợp sau thực xong chương trình con, nội dung ghi bị thay đổi, thường người ta sử dụng lệnh PUSH POP chương trình để đưa tạm vào ngăn xếp sau lấy lại ghi Ví dụ đoạn chương trình trên, sau thực chương trình xong, nội dung ghi AX bị thay đổi Ta viết lại sau: Xoa_mh PROC PUSH AX ;đẩy tạm AX vào ngăn xếp MOV AH,0 MOV AL,3 INT 10h POP AX ;lấy lại giá trị cũ từ ngăn xếp cho AX RET ; sau trở chương trình Xoa_mh ENDP - Để người khác đọc hiểu rõ thủ tục thực thì, người lập trình phải có đoạn giải thích sau: 90 ; Chức thủ tục ; Vào: (lấy thơng tin từ chương trình gọi) ;Ra: (trả thông tin xử lý cho chương trình gọi) ; cách sử dụng (nếu có) Ví dụ: Viết thủ tục thực nhân số nguyên dương A B cách cộng dịch bit Thuật toán: Tich = Repeat If LSB(B) = Then Tich = tich + A End_if SHL A,1 SHR B,1 Until B= Đoạn mã: Nhan PROC ; nhan so A,B bang phep dich cong cac bit ; Vao: AX = A; BX = B ; Ra: DX = ketqua PUSH AX ;đẩy tạm vào AX vào ngăn xếp PUSH BX ;đẩy tạm vào BX vào ngăn xếp XOR DX,DX ;xố ghi DX chứa tích REPEAT: ;if B le TEST BX,1 ; bit LSB BX 1? JZ END_IF ;khôngbằng 1, dịch trái AX… ;then ADD DX,AX ;tich=tich+AX END_IF: SHL AX,1 ;dịch trái AX SHR BX,1 ;dịch phải BX ;until B=0 JNZ REPEAT ;B0, lặp lại POP BX ;khôi phục lại BX POP AX ; AX từ ngăn xếp RET Nhan ENDP 4.3 Truyền tham số cho chương trình Sau lập chương trình con, người lập trình việc gọi chúng từ đoạn chương trình sau: CALL Việc gọi chương trình đơn giản, song có số ý ta thực với chương trình a Chương trình nằm đoạn với chương trình Nếu chương trình nằm đoạn với chương trình ta gọi thực theo mẫu sau: 91 Title ctchinh MODEL Small STACK 100h DATA ; khai báo liệu cho chương trình CODE Main PROC MOV AX, @data MOV DS,AX ; lệnh chương trình CALL Ctc ; lệnh chương trình Main ENDP Ctc PROC ;các lệnh chương trình RET Ctc ENDP END main b Chương trình soạn thảo tệp khác Nếu chương trình soạn thảo tệp khác (ví dụ CTC.lib), sử dụng lệnh INCLUDE vị trí khai báo chương trình Vídụ: Title ctchinh MODEL Small STACK 100h DATA ; khai báo liệu cho chương trình CODE Main PROC MOV AX, @data MOV DS,AX ; lệnh chương trình CALL Ctc ; lệnh chương trình Main ENDP INCLUDE Ctc.lib END mai CÂU HỎI ÔN TẬP VÀ BÀI TẬP CHƯƠNG Giải thích lệnh sau: MOV AL,3Fh; MOV DL,D7h; ADD AL,DL; 2.Chỉ chế độ địa lệnh sau: a MOV AL,BL b MOV AX,100h c.MOV AX,[101] 92 d ADD AL,[BX]+5 e ADD AL,[BX]+[SI]+1000 Cho biết mã lệnh mã máy lệnh 4.Viết chương trình thực in hình thông tin thân Sau lần hiển thị thơng tin, người sử dụng 5.Viết chương trình thực việc nhập vào kí tự từ bàn phím sau in hình lần kí tự dịng 6.Viết đoạn chương trình thực việc nhập vào kí tự từ bàn phím Nếu kí tự số in dịng tiếp theo, khơng kí tự số in dịng thơng báo “kí tự bạn vừa nhập khơng phải kí tự số” 7.Viết đoạn chương trình thực việc nhập vào kí tự từ bàn phím Nếu chữ hoa đổi thành chữ thường in kết hình, chữ thường đổi thành chữ hoa in kết hình, khơng phải kí tự in thơng báo “kí tự bạn vừa nhập khơng phải chữ” 8.Viết đoạn chương trình thực việc nhập vào kí tự số (0-9) từ bàn phím thực việc tính tổng hai số in hình 9.Viết đoạn chương trình thực việc nhập vào kí tự số (0-9) từ bàn phím thực việc lấy số lớn trừ số nhỏ, in hình hiệu số 10.Viết đoạn chương trình thực việc nhập vào từ bàn phím kí tự, kiểm tra kí tự chữ hiển thị 20 lần dịng, khơng chữ khỏi chương trình TÀI LIỆU THAM KHẢO - Nguyễn Đình Việt (2000), Giáo trình Kiến trúc máy tính, NXB: Đại học Quốc gia Hà nội - Msc Võ Văn Chín, Ths Nguyễn Hồng Vân, KS Phạm Hữu Tài, Giáo trình kiến trúc máy tính(1997), Khoa Cơng nghệ thơng tin, Đại học Cần thơ

Ngày đăng: 17/12/2023, 10:08

Tài liệu cùng người dùng

Tài liệu liên quan