Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 97 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
97
Dung lượng
1,5 MB
Nội dung
GIỚI THIỆU VỀ MƠN HỌC CẤU TRÚC MÁY TÍNH VỊ TRÍ, TÍNH CHẤT, Ý NGHĨA VÀ VAI TRỊ CỦA MƠN HỌC: - Vị trí: Mơn học Cấu trúc máy tính bố trí học sau mơn học chung, mơn tin học đại cương, tin học văn phịng, - Tính chất: Là mơn học kỹ thuật sở thuộc môn học đào tạo nghề bắt buộc - Ý nghĩa : môn sở, cung cấp cho sinh viên kiến thức máy tính nghề Quản trị CSDL MỤC TIÊU CỦA MƠN HỌC: - Trình bày lịch sử máy tính, hệ máy tính cách phân loại máy tính - Mơ tả 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ị - Trình bày 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 - Trình bày chức nguyên lý hoạt động loại nhớ - Trình bày phương pháp lưu trữ liệu nhớ - Cài đặt chương trình lệnh điều khiển Assembly để thực toán theo yêu cầu - Bố trí làm việc khoa học đảm bảo an tồn cho người phương tiện học tập + Nội dung môn học /mô đun (danh sách chương mục/bài học ): NỘI DUNG CHÍNH CỦA MƠN HỌC: - Chương 1: Tổng quan cấu trúc máy tính - Chương 2: Kiến trúc phần mềm xử lý - Chương 3: Tổ chức vi xử lý - Chương 4: Hệ thống nhớ - Chương 5: Thiết bị nhập xuất - Chương 6: Các loại bus - Chương 7: Ngôn ngữ assembly Khoa : Công nghệ thông tin – TCN Quang Trung Trang MỤC LỤC ĐỀ MỤC TRANG CHƯƠNG 1:TỔNG QUAN VỀ CẤU TRÚC MÁY TÍNH 1.Các mốc lịch sử phát triển công nghệ máy tính 2.Thơng tin mã hóa thơng tin 2.1 Khái niệm thông tin lượng thông tin 2.2 Sự mã hóa thơng tin 10 Đặc điểm hệ máy tính điện tử 16 3.1 Thế hệ thứ nhất: (1945-1955) 16 3.2 Thế hệ thứ hai: (1955-1965) 16 3.3 Thế hệ thứ ba: (1965-1980) 16 3.4 Thế hệ thứ tư: (1980- ) 17 Kiến trúc tổ chức máy tính 17 4.1 Khái niệm kiến trúc máy tính 17 4.2 Khái niệm tổ chức máy tính 18 Các mơ hình kiến trúc máy tính 18 5.1 Mơ hình kiến trúc Von Neumann 18 5.2 Mơ hình kiến trúc Havard 19 CÂU HỎI VÀ BÀI TẬP 20 CHƯƠNG 2: KIẾN TRÚC PHẦN MỀM BỘ XỬ LÝ 22 Các thành phần máy tính 22 1.1 Bộ xử lý trung tâm (CPU) 22 1.2 Bộ nhớ máy tính 23 1.3 Hệ thống vào - 25 1.4 Liên kết hệ thống 25 Kiến trúc tập lệnh CISC RISC 27 2.1 Kiến trúc tập lệnh CISC 27 2.2 Kiến trúc tập lệnh RISC 28 Mã lệnh 29 3.1 Khái niệm lệnh máy, mã lệnh 29 3.2 Tập lệnh 30 CÂU HỎI VÀ BÀI TẬP 36 CHƯƠNG 3: TỔ CHỨC BỘ VI XỬ LÝ 37 1.Sơ đồ khối xử lý 37 Đường dẫn liệu 38 2.1 Các thành phần đường dẫn liệu 38 2.2 Nhiệm vụ đường dẫn liệu 38 Bộ điều khiển 40 3.1 Chức điều khiển 40 3.2 Các phương pháp thiết kế điều khiển 40 3.2.1 Bộ điều khiển vi chương trình (Microprogrammed Control Unit) 40 3.2.2 Bộ điều khiển dùng mạch điện tử 41 Tiến trình thực lệnh máy 42 Khoa : Công nghệ thông tin – TCN Quang Trung Trang 4.1 Đọc lệnh 42 4.2 Giải mã lệnh 42 4.3 Thi hành lệnh 42 4.4 Thâm nhập nhớ 43 4.5 Lưu trữ kết 43 Kỹ thuật ống dẫn lệnh 44 Kỹ thuật siêu ống dẫn lệnh 45 Các chướng ngại ống dẫn lệnh 46 7.1 Chướng ngại cấu trúc 46 7.2 Chướng ngại liệu 47 7.3 Chướng ngại điều khiển 48 Các loại ngắt 49 8.1 Ngắt 49 8.2 Các loại ngắt 49 8.3 Hoạt động ngắt 50 CÂU HỎI VÀ BÀI TẬP 50 CHƯƠNG 4: HỆ THỐNG NHỚ 51 1.Phân loại nhớ 51 1.1 Phân loại nhớ theo phương pháp truy nhập 51 1.2.Phân loại theo đọc ghi nhớ 51 Các loại nhớ bán dẫn 51 2.1.ROM (Read Only Memory) 51 2.2.RAM (Random Access Memory) 52 2.3 Thiết kế môdun nhớ bán dẫn 54 Hệ thống nhớ phân cấp 55 Kết nối nhớ với xử lý 56 5.Các tổ chức cache 57 5.1 Cache (bộ nhớ đệm nhanh) 57 5.2 Tổ chức cache 58 5.3 Các phương pháp ánh xạ địa 58 CÂU HỎI VÀ BÀI TẬP 62 CHƯƠNG 5: THIẾT BỊ NHẬP XUẤT 63 1.Các thiết bị nhớ vật liệu từ 63 1.1Đĩa từ (đĩa cứng, đĩa mềm) 63 1.2 Băng từ 65 2.Thiết bị nhớ quang học 65 2.1 CD-ROM, CD-R/W 66 2.2 DVD-ROM, DVD-R/W 66 2.3 Bluray 67 3.Các loại thẻ nhớ 67 An toàn liệu lưu trữ 68 4.1 RAID (Redundant Arrays of Inexpensive Disks) 68 4.2 Các loại RAID 68 CÂU HỎI VÀ BÀI TẬP 72 Khoa : Công nghệ thông tin – TCN Quang Trung Trang CHƯƠNG 6: CÁC LOẠI BUS 73 Định nghĩa bus, bus hệ thống 73 1.1 Định nghĩa bus 73 1.2 Bus hệ thống(System bus) 73 Bus đồng không đồng 73 2.1.Bus đồng 73 2.2 Bus không đồng 74 Hệ thống bus phân cấp 74 3.1 Bus nối xử lý với nhớ 74 3.2 Bus vào – 74 Các loại bus sử dụng hệ thống vi xử lý 76 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 77 CHƯƠNG 7: NGÔN NGỮ ASSEMBLY 78 Tổng quan 78 Ngôn ngữ máy: 78 Hợp ngữ: 78 2.Cấu trúc chương trình 78 2.1 Cấu trúc chương trình hợp ngữ 79 2.2 Cú pháp lệnh hợp ngữ 80 2.3 Các kiểu liệu hợp ngữ 81 Các lệnh điều khiển 83 3.1 Các lệnh 83 Ngăn xếp thủ tục 92 4.1 Ngăn xếp 92 4.2 Các thủ tục 93 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 95 TÀI LIỆU THAM KHẢO 97 Khoa : Công nghệ thông tin – TCN Quang Trung Trang CHƯƠNG 1:TỔNG QUAN VỀ CẤU TRÚC MÁY TÍNH 1.Các mốc lịch sử phát triển cơng nghệ máy tính Mục tiêu: sinh viên hiểu lịch sử phát triển máy tính 30 năm trước, 5150 đời phá vỡ quan điểm trước máy tính Lần đầu tiên, máy tính nhìn nhận thiết bị có kích thước vừa phải, hợp túi tiền công chúng ý nhiều 1982: Franklin Ace 100 Đây máy tính gây vụ kiện quyền phần mềm lịch sử Acer bị Apple kiện vi phạm nhãn hiệu hàng hóa chép phần cứng phần mềm máy tính Apple II cho Franklin Ace 100 Trong vụ kiện này, phần thắng thuộc Apple 1982: Commodore 64 Có thể coi Commodore máy tính dành cho hộ gia đình tiếng Từ năm 1982 tới năm 1993, gần 30 triệu máy Commodore 64 bán toàn giới XT nâng cấp máy tính cá nhân 5150 IBM XT có ổ cứng 10 MB Sản phẩm IBM sau nhanh chóng trở thành máy tính tiêu chuẩn Khoa : Công nghệ thông tin – TCN Quang Trung Trang 1983: Apple Lisa Lisa máy tính tiêu dùng có giao diện đồ họa Tuy nhiên, giá 10.000 USD trở thành rào cản đưa sản phẩm đến với người tiêu dù 1984: Macintosh Macintosh thu thành cơng vang dội tới mức 30 năm đó, sản phẩmmáy tính Apple coi hậu duệ trực tiếp Macintosh Macintosh có giao diện đồ họa Lisa mức giá "mềm" nhiều giúp sản phẩm dễ tiêu thụ Khoa : Công nghệ thông tin – TCN Quang Trung Trang 1990: NeXT Máy tính NeXT sản xuất công ty riêng Steve Jobs thành lập sau ông rời Apple vào năm 1985 Tuy nhiên, máy tính trở nên quan trọng lý khác: mẫu máy tính Tim Berners-Lee dùng làm máy chủ World Wide Web 1996: Deep Blue Năm 1994, máy tính Deep Thought IBM bị kiện tướng cờ vua Garry Kasparov đánh bại cách dễ dàng Tháng năm 1996, máy tính Deep Blue đánh thắng Garry Kasparov hiệp đấu Đây lần đương kim vô địch giới thất bại ván cờtrước đối thủ máy tính.Tuy nhiên, hiệp sauđó Deepđã bị Garry Kasparov chinh phục Sau lần thất bại này, kỹ sư IBM sức nghiên cứu nâng cấp Deep Blue trở lại "phục thù", đánh bại kiện tướng cờ vua vào năm 1997, trình diễn khả xử lý chưa thấy lịch sử trước Khoa : Cơng nghệ thông tin – TCN Quang Trung Trang 1998: iMac iMac xóa hình ảnh nhàm chán máy tính cá nhân màu xám cục mịch Apple cách mạng hóa hình ảnh máy tính với mẫu iMacnhiều màu sắc sặc sỡ Hiện iPad? Loại "máy tính di động" cịn gây nhiều tranh cãi vớimối nghi ngờ liệumáy tính bảng nói chung iPad nói riêng có phải "mốt thời" Dù thử xem vòng năm, máy tính thay đổi với iPad 2.Thơng tin mã hóa thơng tin Mục tiêu:nắm thơng tin gì.Cách thức mã hóa thơng tin 2.1 Khái niệm thơng tin lượng thông tin Khái niệm thông tin Khoa : Công nghệ thông tin – TCN Quang Trung Trang Thông tin trạng thái có ý nghĩa hiệu điện Khái niệm thông tin gắn liền với hiểu biết trạng thái cho sẵn nhiều trạng thái có vào thời điểm cho trước Trong hình này, quy ước có hai trạng thái có ý nghĩa: trạng thái thấp hiệu điện thấp VL trạng thái cao hiệu điện lớn VH Để có thơng tin, ta phải xác định thời điểm ta nhìn trạng thái tín hiệu Thí dụ, thời điểm t1 tín hiệu trạng thái thấp thời điểm t2 tín hiệu trạng thái cao Lượng thơng tin Thông tin đo lường đơn vị thông tin mà ta gọi bit Lượng thông tin định nghĩa cơng thức: I = Log2(N) Trong đó: I: lượng thơng tin tính bit N: số trạng thái có Vậy bit ứng với hiểu biết trạng thái hai trạng thái có Thí dụ, hiểu biết trạng thái 16 trạng thái ứng với lượng thông tin là: I = Log2(16) = bit Tám trạng thái ghi nhận nhờ số nhị phân (mỗi số nhị phân có giá trị 1) Như lượng thông tin số số nhị phân cần thiết để biểu diễn số trạng thái có Do vậy, số nhị phân gọi bit Một từ n bit tượng trưng trạng thái tổng số 2n trạng thái mà từ tượng trưng Vậy từ n bit tương ứng với lượng thơng tin n bit Ví dụ : Tám trạng thái khác ứng với số nhị phân Trạng thái A0 Khoa : Công nghệ thông tin – TCN Quang Trung A1 A2 Trang 0 0 1 1 0 1 0 1 1 1 2.2 Sự mã hóa thơng tin 2.2.1 Mã mã hóa gì? Mã hóa phương pháp để biến thơng tin (phim ảnh, văn bản, hình ảnh ) từ định dạng bình thường sang dạng thơng tin khơng thể hiểu khơng có phương tiện giải mã Ví dụ quy tắc mã hóa đơn giản: Tất ký tự bị thay ký tự thứ phía trước bảng chữ Bảng chữ gồm: "ABCDEFGHIJKLMNOPQRSTUVXYZ " Vậy với câu: KY THUAT MA HOA CO BAN Theo quy tắc trên, K => G, Y => T, " " => V Sau mã hóa có chuỗi: GYVPDQXPVIXVDKXVZKVYXJ Rõ ràng đọc chuỗi bạn không hiểu nội dung khơng có khóa để giải mã Khóa số ký tự mà bạn dịch Khi nhận chuỗi này, bạn cần dịch ngược trở cách thay ký tự ký tự thứ phía sau G => K, T => Y, Với ví dụ trên, Tắt ký tự bị thay ký tự thứ phía trước bảng chữ mã hóa thay ký tự ký tự thứ phía sau giải mã 2.2.2 Biểu diễn số máy tính Khái niệm hệ thống số: Cơ sở hệ thống số định nghĩa phạm vi giá trị có chữ số Ví dụ: hệ thập phân, chữ số có giá trị từ 0-9, hệ nhị phân, chữ số (một bit) có hai giá trị Dạng tổng quát để biểu diễn giá trị số: Vk = i = n −1 i b k i i =− m Trong đó: Khoa : Cơng nghệ thông tin – TCN Quang Trung Trang 10 Byte thấp WORD1 chứa 34h , byte cao WORD1 chứa 12h Ký hiệu địa byte thấp WORD1 ký hiệu địa byte cao WORD1+1 Các hằng: Trong chương trình đặt tên nhờ dẫn EQU (equates) Cú pháp EQU : Tên tượng trưng EQU số ví dụ : LF EQU 0AH sau có khai báo LF dùng thay cho 0Ah chương trình Vì ASM chuyễn lệnh : MOV DL,0Ah MOV DL,LF thành mã máy Các lệnh điều khiển - Vận dụng cú pháp lệnh điều khiển để xây dựng toán; - Sử dụng lệnh bản; 3.1 Các lệnh 3.1.1 Nhóm lệnh chuyển liệu 3.1.1.1 Lệnh MOV * Cú pháp : MOV < đích > , < nguồn > < đích > : ghi hay nhơ < nguồn > : ghi ,bộ nhớ hay Chức : Chuyển nội dung tóan hạng nguồn vào tóan hạng đích chiều dài liệu hay 16 bit * Ghi : - Lệnh MOV không ảnh hưởng đến ghi cờ hiệu - Không phép chuyển hai tóan hạng nhớ với Muốn chuyển phải dùng ghi trung gian Ví dụ : MOV AX , Var MOV Var , AX - Không thể chuyển trực tiếp giữahai ghi đọan - Không thể chuyển vào ghi đọan, muốn chuyển phải dùng ghi trung gian Ví dụ : MOV AX ,data Khoa : Công nghệ thông tin – TCN Quang Trung Trang 83 MOV DS , AX - Không dùng ghi CS vào tóan hạng lệnh MOV Màu : - Địa hình màu : B800 : 0000 - Mỗi ký tự hình biểu diễn byte Byte thấp : chứa ký tự cần in Byte cao : chứa màu màu ký tự Nó định dạng sau : B/I H G B I R G B B / I : nằm bit thứ H : nằm bit thứ G : nằm bit thứ B : nằm bit thứ H, G ,B : màu I : nằm bit thứ R : nằm bit thứ G : nằm bit thứ B: nằm bit I ,R ,G ,B : màu chử I : intensity ( cường độ , độ sáng ) :tối : sáng B : blinking ( chớp nháy ) : không nháy :nháy Bit 7( B / I ) : vừa làm nhiệm vụ cho nhấp nháy chữ hay tăng giảm độ sáng cho màu I R G B MÀU I R G B MÀU 0 0 đen 0 Đen nhạt 0 Xanh dương 0 Da trời Xanh 0 1 Xanh nhạt 0 1 cyan 1 cyan sáng 0 Đỏ 1 0 Đỏ sáng 1 Tím 1 Tím cà 1 Nâu 1 Vàng 1 Xám đậm 1 1 Trắng Cách nhớ màu: Đen Xanh dương Xanh Khoa : Công nghệ thông tin – TCN Quang Trung cyan Đỏ Tím Nâu Xám Trang 84 - Muốn chữ sáng : cộng thêm số cho màu chử - Muốn sáng / chử nháy cộng thêm số cho màu CÔNG THỨC : Màu * 16 + màu chữ Ví dụ : Chữ A có màu xanh dương đỏ A : 65 đổi sang hệ thập phân : 1000000 Ta lấy 1000000 + = 01000001 Trong 0100 đỏ 0001 chử A màu xanh dương Cơng thức tính địa offset ký tự cần xuất hình (Dịng * 18 + cột)*2 Ví dụ : Viết chương trình in chử A dịng cột 10 có màu xanh dương đỏ Code segment Assume CS : code , DS : code Org 100h Begin MOV AX, 0B800h MOV DS, AX MOV AL, 'A' MOV AH, 65 dòng = cột = 10 MOV BX , ( dòng * 80 + cột ) * MOV [ BX ], AX Code Ends End Begin 3.1.1.2.Lệnh XCHG : (Exchange) * Cú pháp : XCHG < đích > ,< nguồn > Tốn hạng < nguồn > < đích > ghi hay nhớ * Công dụng : dùng để hóan chuyển nội dung hai tóan hạng < đích > * Ghi : - Lệnh không ảnh hưởng đến cờ hiệu - Không dùng lệnh với ghi đọan Ví dụ : A DW 1234h Khoa : Công nghệ thông tin – TCN Quang Trung Trang 85 B DW 3456h MOV AX , A XCHG AX , B MOV A , AX 3.1.1.3.Lệnh PUSH * Cú pháp : PUSH < nguồn > < Nguồn >: Có thể ghi hay nhớ 16 bit * Công dụng : Dùng để nạp nội dung tóan hạng < nguồn > vào stack ( chồng) ghi SP giảm hai đơn vị 3.1.1.4 Lệnh POP * Cú pháp : POP < đích > Ngược lại với lệnh PUSH lệnh POP lấy nội dung đỉnh STACK đưa vào tóan hạng đỉnh SP tăng lên hai đơn vị * Lưu ý : Để cất giữ ghi việc sử dụng lệnh PUSH , lệnh POP dùng lệnh POP ta phải lấy ngược với lệnh PUSH Ví dụ : PUSH AX PUSH BX PUSH CX Ta dùng lệng POP ngược lại với PUSH POP CX POP BX POP AX 3.1.1.5 Lệnh XLAT * Cú pháp : XLAT * Công dụng : Dùng để chuyển nội dung số ô nhớ (8 bit ) vào ghi AL * Ghi : DS :BX chứa địa offset vùng nhớ AL chứa thứ tự nhớ 3.1.2 Nhóm lệnh tính tốn số học 3.1.2.1.Nhóm lệnh xử lý phép cộng 3.1.2.1.1 Lệnh ADD: ( Addition ) Cú pháp : ADD < Dest > , < Source > < Dest > = < Dest > + < Source > Dest : Là ghi hay nhớ Source : Là ghi hay nhớ hay trực Chức : Dùng để cộng khơng nhớ tốn hạng Dest tốn hạng Source , kết lưu vào toán hạng Dest Lệnh ảnh hưởng đến cờ : SF, CF , OF , AF, PF, ZF 3.1.2.1.2 Lệnh ADC ( Addition With Carry ) Khoa : Công nghệ thông tin – TCN Quang Trung Trang 86 Cú pháp : ADC < Dest > , < Source > < Dest > = < Dest > + < Source > + CF Tương tự lênh ADD , lệnh ADC thực phép cộng có nhớ Lệnh ADC lấy tốn hạng < Dest > + < Source> + cờ CF, kết lưu vào toán hạng Dest , lệnh thường dùng cho phép cộng lớn 16 bít 3.1.2.1.3 Lệnh INC : ( Increment ) Cú pháp : INC < Dest > < Dest > = < Dest > + Dest : Có thể ghi hay nhớ Lệnh ảnh hưởng đến cờ : OF , ZF , PF , AF , SF Ví dụ : Cho hai số A, B dạng double word chứa hai số ngun khơng dấu , Viết chương trình cộng hai số A , B Kết đưa vào biến C , có sử lý trường hợp tràn số Code SEGMENT ASSUME CS : Code , DS : Code ORG 100h Begin : MOV AX , Word PTR A MOV BX , Word PTR A+2 ADD AX , Word PTR B ADC BX , Word B+2 MOV Word PTR C+2 , Int 20h A DD 7000F000h B DD 90002000h C DB Dup( ) Code ENDS END Begin 3.1.2.2 Nhóm lệnh xử lý phép trừ 3.1.2.2.1 Lệnh SUB ( Subtract) * Cú pháp: SUB < dest>, < Dest >= - Source :có thể ghi hay nhớ Lệnh source lấy nội dung toán hạng dest trừ toán hạng source kết lưu vào dest Ví dụ : Mov AX , 1234h Sub AX , 0345h; AX = 1234h - 0345h Lệnh Sub ảnh hưởng đến sáu cờ 0F , CF , AF , PF , SF ,ZF 3.1.2.2.2 Lệnh SBB ( Subtract with Borrow) * Cú pháp: SBB < dest > , < source > < Dest > = < Dest > - < Source > - CF Khoa : Công nghệ thông tin – TCN Quang Trung Trang 87 Lệnh SBB lấy toán hạng < Dest > - < Source > trừ thêm cờ CF , kết lưu vào toán hạng Dest 3.1.2.2.3 Lệnh DEC ( Decrement) * Cú pháp: DEC < Dest > < Dest > = < Dest > -1 Lệnh Dest lệnh giảm đơn vị Lệnh ảnh hưởng đến Cờ Cờ CF không ảnh hưởng tới Lưu ý : Lệnh SBB sử dụng cho trường hợp số lớn 16 bít Ví dụ : Viết chương trình trừ số :A=70002000h , B=90003000h,kết lưu vào nhớ C = Byte Nếu byte cao C =1thì kết số âm , ngược lại số dương Code Segment Assume CS :Code ORG 100h Begin: Mov AX , Word PTR A Mov BX , Word PTR A+2 SUB AX , Word PTR B SUB BX , Word PTR B+2 Mov Word PTR C , AX Mov Word PTR C+2 , BX ADC Word PTR C +4 Int 20h A DB 70002000h B DB 90003000h C DB Dup ( ? ) Code Ends End Begin 3.1.2.3 Nhóm lệnh xử lý phép nhân Lệnh MUL ( Multiply) * Cú pháp: MUL < Source> < Source> ghi hay nhớ bít hay 16 bít Trương hợp : Nếu < Source > có độ dài bít lệnh MUL lấy nội dung ghi AL nhân với source , kết lưu vào ghi AX Trường hợp 2:Nếu source có độ dài 16 bít lệnh MUL lấy nội dung ghi AX nhân với sourrce , kết 32 bít :16 bít thấp lưu vào AX , 16 bit cao lưu vào DX Ví dụ : Mov AL , 12h Mov BL , 10h MUL BL ; BL = 120h , AX = 0120h Mov AX ,1234h Mov BX , 100h MUL BX Khoa : Công nghệ thông tin – TCN Quang Trung Trang 88 3.1.2.4 Nhóm lệnh xử lý phép chia Lệnh DIV * Cú pháp: DIV < Source > Tương tự phép nhân < source > có trường hợp Trường hợp 1:Nếu source có độ dài bít lệnh DIV lấy nội dung ghi AX chia cho source , thương số phép chia lưu ghi AL dư số lưu AH Trường hợp :Nếu source 16 bít lệnh DIV lấy nội dung cặp ghi DX : AX chia cho toán hạng source , thương số lưu AX , dư số lưu DX Ví dụ : Mov AX , 0234h Mov BL , 10h DIV BL ; AL = 23h , AH = 04h Mov AX , 1234h Mov DX , 0567h Mov BX , 100h DIV BX ; AX = 567h , DX = 0234h Ghi : Muốn in số >= kí số chia liên tiếp số cho 10 đến thương số = Sau phép chia cất dư số vào stack , Sau thương số = muốn in ta lấy gía trị đỉnh Stack đưa hình 3.2 Các lệnh chuyển điều khiển 3.2.1 So sánh * Cú pháp: CMP < Left >, < Right > Left : Là ghi hay nhớ Right : Là ghi hay nhớ hay trực Ví dụ : CMP AL,0Dh * Cơng dụng : Dùng để so sánh toán hạng Left toán hạng Right Lệnh Assemble lấy toán hạng Left trừ toán hạng Right kết lưu cờ mà không thay đổi nội dung hai toán hạng Kết phép so sánh : 1.1 Đối với số không dấu : CỜ ZF CF Left > Right Left = Right Left < Right 0 0 1.2 Đối Với Số Có Dấu : Khoa : Cơng nghệ thơng tin – TCN Quang Trung Trang 89 CỜ ZF OF Left > Right Left = Right Left < Right Ví dụ : SF 0/1 /0 0/1 0/1 Mov AX , 6000h CMP AX , -7000h 6000h - ( -7000h ) 3.2.2 Lệnh lặp Lệnh Loop : * Cú pháp : Loop * Công dụng : Dùng để lặp vòng Nếu ghi CX khác lệnh Loop chuyển điều khiển đến lệnh kế sau nhãn gỉam ghi CX đơn vị Nếu CX=0 lệnh nằm phía sau lệnh Loop thực thi Ví dụ : Mov AH , 01h Mov CX , Lặp : Loop lặp Nhóm Lệnh Lặp Có Điều Kiện : a LoopE / LoopZ Lặp CX khác ZF = b LoopNE / LoopNZ < Nhãn > Lặp CX khác ZF = Ví dụ : Viết chương trình nhập từ bàn phím chuỗi tối đa 80 kí tự Sau tìm kí tự chữ 'a' chuỗi vừa nhập vào , in kết Code SEGMENT ASSUME CS : Code , DS : Code ORG 100h Begin : Mov AH , 09h Mov DX , Offset mess1 Int 21h Mov DX , Offset Maxtype Mov AH , 0Ah Int 21h Mov BX , Offset Len Khoa : Công nghệ thông tin – TCN Quang Trung Trang 90 Mov CL , [ BX ] Mov CH , Mov BX , Offset Buffer - Mov AL , 'a' Lặp: INC BX CMP AL , [ BX ] LoopNE Lặp JE thấy JMP không thấy Thấy: Mov AH , 09h Mov DX , Offset mess2 Int 21h JMP thoat Không thấy : Mov AH , 09h Mov DX , Offset mess3 Int 21h thoat : Int 20h mess3 DB ' Khơng tìm thấy $' mess2 DB ' Đã tìm thấy $' mess1 DB ' Nhập chuỗi (< 80 ) kí tự ' Maxtype DB 81 Len DB Buffer DB 81 Dup( ? ) Code ENDS END Begin 3.2.3 Lệnh nhảy 3.2.3.1 Lệnh nhảy không điều kiện Cú pháp : JMP < Nhãn > 3.2.3.2 Lệnh nhảy có điều kiện 3.2.3.2.1 Nhóm Lệnh Nhảy Dùng Cho Số Khơng Dấu LỆNH ĐIỀU KIỆN Ý NGHĨA ZF = and CF = JA (>) Jump if above CF = JAE (>=) Jump if above or equal JNA (=) SF = OF and ZF = JNG ( < = ) SF = OF JNGE ( < ) JL ( ) 3.2.3.2.3 Nhóm Lệnh Nhảy Dùng Cho Cả LỆNH ĐIỀU KIỆN JE (=) ZF = JNE (< > ) ZF = JZ (=) JNZ ( < >) JC CF = JNC CF = JCXZ CX = Ý NGHĨA Jump if greater Jump if greater or equal Jump if Not greater Jump if Not greater or equal Jump if less Jump if less or equal Jump if Not less Jump if Not less or equal Số Có Dấu Và Không Dấu Ý NGHĨA Jump if equal Jump if Not equal Jump if Zero Jump if Not Zero Jump if carry Jump if Not carry Jump if CX Zero Ngăn xếp thủ tục - Mục tiêu: Trình bày ngăn xếp; - Viết chương trình cách truyền tham số cho chương trình 4.1 Ngăn xếp Đoạn ngăn xếp (stack segment) chương trình dùng để cất giữ tạm thời số liệu địa Trong phần xem xét cách tổ chức stack sử dụng để thực thủ tục (procedure) Ngăn xếp cấu trúc liệu chiều Điều có nghĩa số liệu đưa vào lấy khỏi stack đầu cuối stack theo nguyên tắc LIFO ( last in first out) Vị trí số liệu đưa vào hay lấy gọi đỉnh ngăn xếp (top of stack) Có thể hình dung satck chồng đĩa Đĩa đưa vào sau nằm đỉnh chồng đĩa Khi lấy ra, đĩa lấy trước Một chương trình phải dành khối nhớ cho ngăn xếp Chúng ta dùng dẫn STACK 100h để khai báo kích thước vùng stack 256 bytes Khi chương trình dịch nạp vào nhớ ghi SS ( stack segment) chứa địa đoạn stack Còn SP ( stack pointer) chứa địa đỉnh ngăn xếp Khoa : Công nghệ thông tin – TCN Quang Trung Trang 92 Trong khai báo stack 100h , SP nhận giá trị 100h Điều có nghĩa stack trống rỗng (empty) hình 6.1 Hình 6.1: Stack empty Lệnh PUSH Để thêm từ vào stack dùng lệnh : PUSH nguồn; đưa ghi từ nhớ 16 bit vào stack Ví dụ PUSH AX Khi lệnh thực : · SP giảm · copy toán hạng nguồn đưọc chuyển đến địa SS:SP cịn tốn hạng nguồn khơng thay đổi Lệnh POP Để lấy số liệu đỉnh stack khỏi stack ,chúng ta dùng lệnh : POP đích ; lấy số liệu đỉnh stack đích Đích ghi từ nhớ 16 bit Ví dụ : POP BX ; Lấy số liệu stack ghi BX Khi thực lệnh POP : · nội dung đỉnh stack ( địa SS:SP) di chuyển đến đích · SP tăng 4.2 Các thủ tục Trong ngôn ngữ cấp cao người ta dùng thủ tục để giải toán , làm hợp ngữ Như chương trình hợp ngữ xây dựng thủ tục Một thủ tục gọi thủ tục chứa nội dung chủ yếu chương trình Để thực cơng việc , thủ tục gọi ( CALL) thủ tục Thủ tục gọi thủ tục khác Khi thủ tục gọi thủ tục khác , điều khiển chuyển tới ( controltransfer) thủ tục gọi lệnh thủ tục gọi thi hành Sau khithi hành hết lệnh , thủ tục gọi trả điều khiển ( return control) cho thủ tục gọi Cú pháp lệnh tạo thủ tục: tên thủ tục PROC kiểu gọi thủ tục ; lệnh Khoa : Công nghệ thông tin – TCN Quang Trung Trang 93 ▪ ▪ RET tên thủ tục ENDP tên thủ tục người dùng định nghĩa kiểu gọi thủ tục NEAR ( khơng khai báo ) FAR ▪ NEAR có nghĩa thủ tục gọi nằm đoạn với thủ tục gọi FAR có nghĩa thủ tục gọi thủ tục gọi nằm khác đọan ▪ Lệnh RET trả điều khiển cho thủ tục gọi Tất thủ tục phải kết thúc ▪ RET trừ thủ tục Ví dụ: Viết chương trình tính tích số dương A B thuật toán cộng ( ADD) dịch ( SHIFT ) Thuật toán sau : Product = REPEAT IF lsb of B is THEN product=product+A END_IF shift left A shift right B UNTIL B=0 Viết chương trình MODEL SMALL STACK 100H CODE MAIN PROC ; thực DEBUG Đặt A = AX , B=BX CALL MULTIPLY ;DX chứa kết qủa MOV AH,4CH INT 21H MAIN ENDP MULTIPY PROC ; input : AX=A , BX=B , AX BX có giá trị khoảng FFH ; output : DX= kết qủa PUSH AX PUSH BX XOR DX,DX REPEAT: ; Nếu lsb B =1 TEST BX,1 ;lsb=1? JZ END_IF ; không , nhảy đến END_IF Khoa : Công nghệ thông tin – TCN Quang Trung Trang 94 ; ADD DX,AX ; DX=DX+AX END_IF : SHL AX,1 ; dịch trái AX bit SHR BX,1 ;dịch phải BX bit ; BX=0 JNZ REPEAT ; BX chưa lặp POP BX ; lấy lại BX POP AX ; lấy lại AX RET ; trả điều khiển cho chương trình MULTIPLY ENDP END MAIN CÂU HỎI VÀ BÀI TẬP CHƯƠNG Bài 1: Giải thích câu lệnh sau a/ MOV AL,5Bh MOV BL,0ADh ADD AL,BL b/ MOV AX,170Fh MOV BX,80EBh ADD AX,BX c/ MOV AL,41h MOV BL,50h CMP AL,BL Bài :Viết chương trình hiển thị hình hình chữ nhật gồm kí tự ' *' Bài :Viết chương trình hiển thị chuỗi ' * * * * * * * * ' hình Bài : Viết chương trình hiển thị hình 26 chữ cái(A->Z) có khỏang trắng Bài : Viết chương trình hiển thị chuỗi " Hello , How are you " hình Bài : Viết chương trình hiển thị hình 26 chữ cái(A->Z) khơng có khỏang trắng Bài : Viết chương trình hiển thị hình chuỗi '012345678' Bài 8:Viết chương trình hiển thị hình hình vng gồm kí tự ' * ' bên Bài :Viết chương trình nhập vào số cho biết số trước lớn hớn , nhỏ hay số sau Bài 10 :Viết chương trình nhập vào chuỗi (