Cấu trúc máy tính và lập trình hợp ngữ bài giảng dành cho sinh viên Đại học, Cao đẳng là bộ tài liệu hay và rất hữu ích cho các bạn sinh viên và quý bạn đọc quan tâm. Đây là tài liệu hay trong Bộ tài liệu sưu tập gồm nhiều Bài tập THCS, THPT, luyện thi THPT Quốc gia, Giáo án, Luận văn, Khoá luận, Tiểu luận…và nhiều Giáo trình Đại học, cao đẳng của nhiều lĩnh vực: Toán, Lý, Hoá, Sinh…. Đây là nguồn tài liệu quý giá đầy đủ và rất cần thiết đối với các bạn sinh viên, học sinh, quý phụ huynh, quý đồng nghiệp và các giáo sinh tham khảo học tập. Xuất phát từ quá trình tìm tòi, trao đổi tài liệu, chúng tôi nhận thấy rằng để có được tài liệu mình cần và đủ là một điều không dễ, tốn nhiều thời gian, vì vậy, với mong muốn giúp bạn, giúp mình tôi tổng hợp và chuyển tải lên để quý vị tham khảo. Qua đây cũng gởi lời cảm ơn đến tác giả các bài viết liên quan đã tạo điều kiện cho chúng tôi có bộ sưu tập này. Trên tinh thần tôn trọng tác giả, chúng tôi vẫn giữ nguyên bản gốc. Trân trọng. ĐỊA CHỈ DANH MỤC TẠI LIỆU CẦN THAM KHẢO http:123doc.vntrangcanhan348169nguyenductrung.htm hoặc Đường dẫn: google > 123doc > Nguyễn Đức Trung > Tất cả (chọn mục Thành viên)
Ch ng T NG QUAN V MÁY TÍNH ĐI N T 1.1 Gi i thi u 1.1.1 L ch s phát triển 1.1.1.1 Máy tính c khí T xa x a ng i phải tính toán Để nh s gia súc đàn, ng ta đ m chúng dùng s i dây có gút nút Để tính toán ng s dụng bàn tính… Nhà khoa học thiên tài ng (năm 1642) th i i Trung Hoa i Pháp Blaise Pascal năm 19 tu i ng cha (cha c a ông v n m t nhân viên thu thu ) xây dựng m t máy thực hi n công vi c tính toán Đây thi t b hoàn toàn c khí s dụng bánh Máy tính c a Blaise Pascal ch thực hi n đ c phép toán c ng cách ấn vào phím s dùng m t tay quay Năm 1671 nhà toán học ng i Đ c Baron Gottfried Wilherm von Leibniz xây dựng m t máy c khí hoàn thi n vào năm 1694 Chi c máy không nh ng thực hi n phép tính c ng mà thực hi n đ c phép tính nhân cách c ng lần l c chuyển s Năm 1820 Chales Xavier Thomas phát triển chi c máy tính c thành công v mặt th ng m i thực hi n đ Charles Babbage, giáo s ng c b n phép tính c ng tr nhân chia toán học tr ng Cambridge c a Anh đ c nhi u i gọi cha đẻ c a Computer nh hai phát ki n vĩ đ i c a ông v kiểu máy tính c khác Ông thi t k xây dựng máy sai phân (difference engine) Nó giải đ c ph ng trình đa th c ph ng pháp sai phân Năm 1834, Babbage thi t k xây dựng máy phân tích (analytical engine) Máy phân tích có thành phần c c a máy tính hi n đ i: Thành phần nhập (đầu đọc thẻ đục l ), b u khiển dùng để u khiển hay lập trình cho b x lý B x lý (hay tính toán – calculator) B l u tr (b nh ), Thành phần xuất (in đục l ) B tính toán nhận toán h ng t b l u tr , thực hi n phép toán c ng, tr , nhân hay chia chúng trả k t v b l u tr Tuy nhiên chi c máy c a Ông hoàn thành kỹ thuật ch t o th i không cho phép Phát triển ti p theo c a máy phân tích máy đa Máy đọc l nh t thẻ đục l thực thi chúng Bằng cách đục l m t ch ng trình khác thẻ nhập, máy phân tích có khả thực hi n tính toán khác Lập trình viên máy tính Ada Lovelace t o phần m m cho máy phân tích Vào nh ng năm 1930, Konrad Zuse xây dựng m t chu i máy tính toán tự đ ng cách s dụng r le t Sau đó, John Atanasoff George Stibbitz thi t k máy tính (calculator) Máy c a Atanasoff s dụng s nh phân có tụ n làm cho b nh đ c làm t công ngh phần c ng không t i theo chu kỳ Tuy nhiên, máy b thất b i ng x ng v i ý t ng thi t k Năm 1944, Aiken hoàn tất máy tính Mark 1, có tất 72 t , m i t 23 s thập phân có th i gian m t chu kỳ giây Vi c nhập xuất thực hi n băng giấy đục l 1.1.1.2 Máy tính dùng đèn n t - th h th Năm 1943, máy tính s n t th gi i bắt đầu ho t đ ng, máy Colossus Colossus Alan Turing thi t k nhằm thực hi n giải mã thông p mã hóa chi n tranh th gi i th Cũng năm 1943, Mauchley Presper Eckert bắt đầu ti n hành xây dựng máy tính ENIAC (Electronic Numerical Integrator And Computer) ENIAC g m 1800 đèn n t 1500 r le, cân nặng 30 tấn, công suất tiêu thụ 140 KWh Nó có tất 20 ghi, m i ghi l u tr m t s thập phân 10 ch s Sau đó, John Von Neumann thi t k máy IAS dựa c s máy EDVAC, m t phiên nâng cao c a ENIAC Máy von Neumman có phần c bản: b nh , đ n v s học logic (ALU – Arithmetich Logic Unit), đ n v u khiển ch ng trình, thi t b nhập thi t b xuất B nh có tất 4096 t , m i t l u tr 40 bit M i t ch a l nh 20 bit hay m t s nguyên có dấu 39 bit M i l nh 20 bit g m có bit xác đ nh lo i l nh 12 bit xác đ nh 4096 t nh Vào th i gian c a máy IAS, nhà nghiên c u MIT xây dựng m t máy tính, máy Whirlwind Nó có chi u dài t 16 bit đ c thi t k để u khiển v i th i gian thực 1.1.1.3 Máy tính transistor – th h th hai Năm 1948, John Bardeen, Walter Brattain William Shockley phát minh transistor làm cu c cách m ng lĩnh vực máy tính Máy tính transistor đ c xây dựng t i MIT, máy TX-0 (Transistorized experimental computer 0), có 16 bit, t ng tự nh Whirlwind Năm 1961, máy tính PDP-1 xuất hi n có 4KB b nh , chi u dài t 18 bit khoảng th i gian c a m t chu kỳ µs Vài năm sau, PDP-8 đ i có 12 bit nh ng giá thành rẻ h n PDP-1 nhi u (16.000 USD so v i 120.000 USD) PDP-8 có m t đ i m i hình thành m t bus đ n gọi omnibus bus tập h p dây n i song song dùng để k t n i thành phần c a máy tính Trong đó, IBM xây dựng m t phiên c a 709 transistor, máy tính 7094 có th i gian m t chu kỳ µs b nh 32KB chi u dài t 36 bit Năm 1964, công ty CDC gi i thi u máy 6600 có t c đ nhanh h n 7094 bên CPU có m t c ch song song CPU có vài đ n v thực hi n phép c ng, đ n v khác thực hi n phép nhân, phép chia tất chúng đ u ho t đ ng song song V i m t công vi c, máy có khả thực thi 10 l nh đ ng th i 1.1.1.4 Máy tính IC – th h th ba Vi m ch (IC – Integrated Circuit) đ c phát minh cho phép đặt vài chục transistor m t chip đ n Vi c giúp cho máy tính xây dựng IC tr nên nh h n, nhanh h n rẻ h n so v i máy tính transistor Lúc này, IBM gi i thi u m t sản phẩm đ n, máy System 360, đ c thi t k dựa vi m ch Đ i m i quan trọng 360 khả đa lập trình (multiprogramming), có vài ch ng trình b nh đ ng th i để m t ch d li u ch ng trình ch xuất/nhập ng trình khác tính toán M t đặc tr ng khác c a 360 không 24 gian đ a ch l n (th i điểm lúc đó), v i byte nh (16 MB) 1.1.1.5 Máy tính cá nhân VLSI – th h th t Vào thập niên 80, vi m ch VLSI (Very Large Scale Integrate) có khả ch a vài chục ngàn, vài trăm ngàn vài tri u transistor m t chip đ n đ c ch t o Sự phát triển dẫn đ n vi c sản xuất máy tính nh h n nhanh h n Do đó, giá giảm xu ng đ n m c m t cá nhân s h u m t máy tính Các máy tính cá nhân th t ng dùng cho vi c x lý t , bảng tính ng dụng ng h khác Quy luật Moore: Năm 1965 Gordon Moore phát quy luật quan trọng xu hướng phát triển máy tính Ông nhận thấy vòng 18 đến 24 tháng lực tính toán, lưu trữ…của máy tính tăng gấp lần Trong 26 năm số tranzitor chip tăng 3.200 lần (từ 2.300 tranzitor chip 4004 năm 1971 tăng lên 7,5 triệu tranzitor Pentium II) Quy luật trở thành sở cho nhiều dự báo hiệu suất ngành công nghiệp máy tính 1.1.2 Phân lo i máy tính Máy tính ngày chia thành lo i: Siêu máy tính, Mainframe, siêu máy tính mini, máy tính mini, máy tính cá nhân Máy tính mini s dụng ng dụng th i gian thực nh u khiển không l u hay tự đ ng hóa Siêu máy tính mini dùng h th ng chia sẻ th i gian, máy ch Mainframe dùng nhóm công vi c l n hay đòi h i c s d li u l n, … Siêu máy tính đ c thi t k đặc bi t để cựa đ i hóa s thao tác dấu chấm đ ng 1s (FLOP – floating point operations per second) Máy tính có t cđ d i GF/s không đ c xem siêu máy tính Máy tính cá nhân chia làm lo i: Máy tính để bàn, máy tính xách tay máy tính b túi 1.2 T ch c h th ng máy tính 1.2.1 S đ cấu trúc chung 1.2.1.1 Nguyên lý máy Von Neumann Vào nh ng năm c a thập niên 40 c a th kỷ 20, máy tính n t s bắt đầu đ c s dụng Có dòng máy máy Turing máy Von Neumann Đ i di n cho máy Turing có máy Colossus Máy Alan Turing thi t k nhằm thực hi n vi c giải mã thông p mã hóa chi n tranh th gi i th Vào năm 1943, Mauchley Presper Eckert bắt đầu ti n hành xây dựng máy tính ENIAC (Electronic Numerical Integrator And Computer) ENIAC g m 1800 đèn n t 1500 r le, cân nặng 30 tấn, công suất tiêu thụ 140 KWh Nó có tất 20 ghi, m i ghi l u tr m t s thập phân 10 ch s Dòng máy tính Von Neumann đ c k th a phát triển hầu h t th h máy tính sau Đ i di n cho máy Von neumann th i có máy IAS dựa c s máy EDVAC, m t phiên nâng cao c a ENIAC Máy IAS có b nh g m 4096 word, m i word l u tr 40 bit M i word ch a l nh 20 bit hay m t s nguyên có dấu 39 bit M i l nh 20 bit g m có bit xác đ nh lo i l nh 12 bit xác đ nh 4096 word nh Máy Von Neumman có phần c bản: b nh , b s học logic (ALU – Arithmetich Logic Unit), đ n v u khiển ch ng trình, thi t b nhập thi t b xuất Hình 1.1 s đ cấu trúc c a máy Von Neumann B nh Đ nv u khiển (CU) Thi b nhập (Input) Đ n v làm toán (ALU) Thi t b xuất (Output) Hình 1.1: Máy Von Neumman Nguyên tắc ho t đ ng c a máy Von neumann: - Ch ng trình u khiển x lý d li u đ tr b nh đ - c xem ch c xem Data đ cl u ng trình l u tr B nh chia làm nhi u ô, m i ô có đ a ch để chọn lựa trình đọc/ghi d li u (nguyên lý đ nh đ a ch ) - Các l nh đ c thực hi n nh vào b đ m ch ng trình (thanh ghi l nh) nằm bên b x lý - Ch ng trình biểu di n d i d ng s đặt vào b nh 1.2.1.2 S đ t ch c t ng quát c a máy vi tính Hình 1.2 s đ kh i ki n trúc chung c a m t máy vi tính B nh RAM ROM CPU BUS h th ng Giao ti p nhập Giao ti p xuất Thi t b nhập -Bàn phím -Mouse -Máy quét - đĩa Thi t b xuất -Màn hình -Máy in -máy v - đĩa Hình 1.2: Sơ đ kiến trúc chung máy vi tính 1.2.2 Ch c c b n c a b phận -CPU (Central Processing Unit): Là b não c a máy tính bao g m thành phần là: b s học logic (ALU) b u khiển (CU): Bộ số học logic (Arithmetic and logic unit – ALU): Hầu h t ho t đ ng tính toán cuả máy tính đ c thực hi n t i b s học logic Mọi phép toán s học logic nh : c ng; tr ; nhân; chia hay so sánh s đ uđ c thực hi n t i ALU Không phải tất toán h ng cần cho vi c tính toán phải b nh Vi x lý có nh ng phần t nh t c đ cao gọi ghi (registers) Các ghi dùng để l u gi nh ng toán h ng đ th ng xuyên tính toán M i ghi l u gi m t word s li u Th i gian truy xuất ghi t nh c dùng đ n 10 ns (nhanh h n th i gian truy xuất b chính) -Bộ điều khiển (control unit - CU): B u khiển có ch c thực hi n vi c ph i h p ho t đ ng c a tất b phận khác nh : B s học logic, b nh , thi t b ngo i vi…sao cho nh p nhàng, đ t hi u cao B u khiển m t mặt g i tín hi u u khiển đ n b phận, mặt khác luôn theo dõi tr ng thái c a b phận để đ a nh ng tín hi u u khiển h p lý Ví dụ vi c chuyển s li u gi a b nh thi t b ngo i vi phải đ c u khiển b i b u khiển B u khiển t o tín hi u th i gian để hành đ ng c a b phận xảy vào th i điểm mong đ i Có thể nói b u khiển m t đ n v đ c lập u khiển tất b phận khác máy Trên thực t , m ch n cuả b u khiển đ khắp n i máy M t tập h p đ c phân b đ n ng dây u khiển (control bus) mang tín hi u th i gian Các tín hi u dùng để đ ng b ho t đ ng cuả tất b phận máy ALU b u khiển th ng thành phần có t c đ ho t đ ng nhanh h n thành phần khác n i v i máy tính Đi u cho phép s dụng ch m t vi x lý để u khiển m t s nh l n thi t b ngo i vi có t c đ ho t đ ng khác b nh ngoài, hình, máy in … -Bộ nhớ (memory) Ch c cuả b nh l u gi s li u ch ng trình Có lo i b nh : b nh s cấp (b nh hay gọi b nh - Primary Memory – Main Memory- Internal Memory) b nh th cấp (b nh hay gọi b nh phụ -Secondary Memory - Auxiliary Memory - External Memory) B nh s cấp hay b nh (Main memory) có t c đ nhanh B nh bao g m m t s l n ô nh bán dẫn M i ô nh ch a đ tin Vi c đọc vi t thông th ng đ c ti n hành v i nhóm ô nh gọi t nh hay word nh (memory word) B nh đ m t word (n bit) đ c m t bit thông c t ch c cho n i dung c a c truy xuất l nh đọc vi t b nh S bit m t word nh gọi đ dài word (word length) c a máy tính Đ dài word c a máy tính 8,16, 32 64 bit T ng s ô nh b nh gọi dung l ng (capacity) b nh Dung l ng b nh c a PC vài MB đ n hàng trăm MB Hi n TB Để truy xuất t i word nh b nh , m i word nh đ đ a ch (Address) riêng bi t Word nh b nh đ cách ch đ a ch l nh đọc vi t t ng ng S li u đ c gán m t c truy xuất c x lý theo m t word, b i c a word m t phần c a word Khi b nh đ m t word c a s li u đ Ch đ c đọc t b nh đ c truy xuất, thông th ng c vi t vào b nh ng trình phải nằm b nh thi hành L nh s li u c vi t vào b nh hay đọc d i u khiển c a vi x lý Th i gian cần thi t để truy xuất t i m t v trí nh b nh nh (memory access time = Tacc) Các b nh gọi th i gian truy xuất b có Tacc không phụ thu c v trí nh gọi b nh truy xuất ngẫu nhiên (Random Access Memories = RAM) Tacc có giá tr vài chục ns (nano second) máy tính hi n đ i Mặc dù b nh quan trọng, nh ng giá thành l i cao Vì ng ta dùng thêm b nh phụ (secondary memory) mu n l u gi m t l thông tin không s dụng th ng xuyên B i ng l n nh phụ đĩa t (magnetic disks) hay đĩa quang (Compact Disc), băng t … -Thiết bị nhập (input device) Máy tính nhận thông tin đ c mã hóa thông qua thi t b nhập Quá trình gọi đọc s li u Thi t b nhập th board đ ng dùng bàn phím (key board) Key c n i cho m t phím đ đ ng chuyển thành mã nh phân đ c nhấn, ký tự s t ng ng đ c tự c g i trực ti p t i b nh vi x lý Có m t s thi t b nhập khác nh : chu t (mouse), máy quét (scanner) -Thiết bị xuất (output device) Thi t b xuất làm vi c theo nguyên tắc ng c a thi t b xuất g i k t đ c l i v i thi t b nhập Ch c c x lý M t s thi t b nh hình, máy in (printer), máy v … Tóm l i, ho t đ ng t ng quát cuả m t máy tính tóm tắt nh sau: • Máy tính nhận thông tin d nhập Thông tin đ • Thông tin đ cuả ch i d ng ch c l u gi b nh máy tính c l u gi b nh đ ng trình T i ALU, thông tin đ • Thông tin đ ng trình s li u thông qua thi t b c x lý đ c lấy vào ALU d i u khiển c x lý c đ a thông qua thi t b xuất • Tất ho t đ ng bên máy tính đ c ch dẫn b i b u khiển -Bus hệ thống: tập h p đ ng dây kim lo i dẫn n để CPU liên k t v i b phận khác 1.2.3 Quá trình thực hi n l nh 1.2.3.1 Chu kỳ l nh Máy tính đ vụ cho tr c u khiển b i l nh (instructions) Để thực hi n m t nhi m c, m t ch gi b nh ng trình t ng ng bao g m m t tập l nh s đ Các l nh riêng r s đ c đọc t b nh vào vi x lý M i l nh s thực hi n m t thao tác đ nh sẳn S li u l u gi b nh đ dụng nh cl u cs toán h ng (operands) Vi c chuyển s li u gi a b nh vi x lý đ c bắt đầu vi c vi x lý g i đ a ch c a ô nh cần truy xuất tín hi u u khiển h p lý t i b nh S li u sau s đ c chuyển gi a b nh vi x lý m t cách t Cùng v i ALU b u khiển, vi x ng ng lý có ghi dùng cho vi c l u tr t m th i s li u Thanh ghi l nh (IR - Instruction Register) gi đ c thực hi n B đ m ch c a l nh s đ ng trình (PC - Program Counter) ch a đ a ch b nh c thực hi n Sau thực hi n l nh, n i dung cuả PC s đ cập nhật t i đ a ch c a l nh ti p theo Bình th n u ch l nh c ng n i dung cuả PC s tăng lên ng trình không b m t l nh nhảy hay l nh ngắt khác 1.2.3.2 Ti n trình x lý l nh Có hai ghi dùng để giao ti p v i b nh là: Thanh ghi đ a ch b nh (MAR Memory Address Register) ghi s li u b nh (MDR Memory Data Register) MAR ch a ch cuả ô nh cần truy xuất, MDR gi n i dung c a s li u cần chuyển (gi a Vi x lý b nh ) Các b hi n ch ch đ ng trình nh sau: Ch c ho t đ ng c thực ng trình ch a b nh Vi c thực thi ng trình bắt đầu PC ch t i v trí nh mà l nh c a ch c l u gi N i dung c a PC đ đọc đ ng trình c chuyển t i MAR m t tín hi u u khiển c g i t i b nh Sau th i gian cần cho vi c truy xuất b nh , n i dung c a t (word) nh (l nh c a ch dung c a MDR đ ng trình) đ c đọc vào MDR Ti p theo, n i c chuyển đ n IR T i th i điểm l nh sẳn sàng cho vi c giải mã thực hi n N u l nh m t phép toán mà ALU phải tính cần phải lấy toán h ng cần thi t N u toán h ng có sẵn bên b nh (các toán h ng đ c ch a ghi dùng chung) phải đ c đọc vào ALU cách g i đ a ch toán h ng t i MAR kh i t o chu trình đọc (read cycle) Toán h ng sau đ c đọc t b nh vào MDR r i chuyển t i ALU Sau m t nhi u toán h ng đ c đọc theo cách này, ALU thực hi n phép toán N u k t phép toán đ c l u tr b nh đ Đ a ch ô nh t i k t đ c l u tr (write cycle) s đ s đ c g i t i MDR c g i t i MAR chu trình vi t c bắt đầu Trong m t l nh đ c thực hi n, n i dung cuả PC s tăng lên cho ch t i đ a ch c a l nh k ti p Ngay sau l nh hi n hành đ c hoàn tất, l nh m i s đ c lấy vào vi x lý để giải mã thực hi n Cùng v i vi c chuyển s li u gi a b nh vi x lý, máy tính truy xuất s li u t thi t b vào g i k t đ n thi t b Do có m t s l nh máy cho phép chuyển s li u vào Vi c thực hi n m t ch ngo i vi yêu cầu đ ng trình b ngắt n u m t nhi u thi t b c phục vụ Tín hi u ngắt đ c t o b i thi t b ngo i vi để yêu cầu vi x lý phải phục vụ chúng Ngắt đ c t o b i l nh INT ch ng trình Vi x lý s cung cấp m t d ch vụ theo yêu cầu cách thi hành m t ch ng trình phục vụ ngắt (Interrupt service routine) Tr tr ng thái bên c a vi x lý phải đ c cất gi dung cuả PC, ghi đa ch c m t s cất gi Khi ch s đ c phục vụ ngắt, vào b nh Bình th thông tin u khiển phải đ ng trình phục vụ ngắt k t thúc, tr ng thái c a ch c phục h i cho ch ng, n i ng trình ng trình b ngắt ti p tục 1.3 Gi i thi u t ch c bên c a máy vi tính 1.3.1 S đ Hình 1.3 s đ cấu trúc c a máy vi tính 10 c Hàm 0Ah Đ i đọc chu i ký tự t bàn phím, k t thúc Enter Vào DS:DX ← đ a ch c a vùng đ m bàn phím b nh Ra LEN: T ng s ký tự nhận đ c BUFF: Mã ASCII c a ký tự nhận đ c Hàm 0Ah nhận chu i ký tự t bàn phím, k t thúc phím Enter (Mã ASCII 0Dh) Hàm trả v chu i nhận đ c chi u dài chu i vùng đ m bàn phím Vùng đ m bàn phím bi n mảng b nh g m phần MAX, LEN BUFF có cấu trúc nh sau: MAX LEN BUFF BUFF+1 BUFF+2 MAX: ch a s ký tự t i đa nhận đ BUFF+… BUFF+n c gán khai báo LEN: ch a t ng s ký tự c a chu i nhận đ c, hàm trả v sau nhận đ c chu i BUFF: ch a mã ASCII c a t ng ký tự chu i nhận đ c (mỗi ký tự chiếm byte nhớ) Nh vậy, s byte c a BUFF phải hay l n h n giá tr c a MAX Ví dụ: Nhận chu i t i đa 30 ký tự t bàn phím Khai báo vùng đệm đoạn liệu: MAX DB 30 ; T o bi n MAX LEN DB ? ; T o bi n LEN BUFF DB 31 DUP(?) ; Vùng nh l u tr ký tự Viết chương trình đoạn lệnh: MOV AH, 0Ah LEA DX, MAX ; DX ← Đ/c vùng đ m bàn phím INT 21h Cách khai báo bi n vùng đ m bàn phím khác: BANPHIM DB 30, ?, 31 DUP(?) Hàm 0Bh Cho tr ng thái bàn phím Vào DS:DX ← đ a ch logic c a vùng đ m bàn phím b nh Ra LEN: T ng s ký tự nhận đ c BUFF: Mã ASCII c a ký tự nhận đ Hàm 3Ch T o tập tin m i 151 c Vào: DS:DX ← Đ a ch chu i tên c a tập tin m i CX ← thu c tính c a tập tin (0: bình th ng, 1: ch đọc, 2: ẩn, 4: tập tin h th ng) Ra AX : Thẻ tập tin Hàm 3Dh M tập tin đĩa Vào DS:DX ← Đ a ch chu i tên c a tập tin m i AL ← kiểu truy xuất tập tin (0: ch đọc, 1: ch ghi, 2: đọc/ghi) Ra AX : Thẻ tập tin Khai báo tên tập tin bi n ch a thẻ file: Tenf DB “C:\DULIEU\DATA.TXT”,0 Thef DW ? Chu i Tên tập tin có ch a tên đ ng dẫn c a file N u tên đ ng dẫn s truy xuất th mục hi n hành Thẻ tập tin thành phần quan trọng vi c truy xuất file nên sau m hay t o file phải l u tr l i để s dụng vi c đọc/ghi file M i file phải có m t thẻ file, bi n thẻ file phải bytes MOV Thef,AX ;L u tr thẻ file vào bi n MOV BX,Thef ;Đ a thẻ file vào BX để truy xuất file Có thể m hay t o nhi u tập tin khác ch Khi đó, m i thẻ tập tin phải đ ng trình để x lý c l u tr m i bi n khác Hàm 3Eh Đóng tập tin m Vào BX ← Thẻ tập tin Ra AX : Mã l i (n u có) Sau x lý xong tập tin tr đ c thoát kh i ch ng trình, tập tin phải c đóng l i để cập nhật thông tin n i dung m i c a tập tin Hàm 3Fh Đọc n i dung tập tin vào b nh Vào DS:DX ← Đ a ch vùng nh ch a d li u đọc đ BX ← Thẻ tập tin cần đọc 152 c CX ← s byte cần đọc Ra AX : S byte đọc đ c Hàm 40h Ghi d li u b nh vào tập tin Vào DS:DX ← Đ a ch vùng nh ch a d li u cần ghi BX ← Thẻ tập tin cần đọc CX ← s byte cần ghi Ra AX : S byte ghi đ c Các hàm 3Fh 40h đ c s dụng đọc ghi d li u cho ngo i vi, DOS quản lý vi c truy xuất ngo i vi thẻ Hàm 41h Xóa tập tin đĩa Vào DS:DX ← Đ a ch chu i tên tập tin Ra AX : Mã l i (n u có) Hàm 42h Đ i tr tập tin hi n hành Vào AL ← H ng d i CX:DX ← Cự ly d i = (CX*65536) + DX BX ← Thẻ tập tin Ra DX:AX : V trí tr m i = (DX*65536)+AX Cấu trúc d li u tập tin: C H A O “” B A N EOF 10 Con tr tập tin hi n hành Hàm 43h Đọc thay đ i thu c tính tập tin đĩa Vào DS:DX ← Đ a ch chu i tên tập tin Nếu Đọc thuộc tính: AL ← Nếu Thay đ i thuộc tính: AL ← CX ← thu c tính m i Ra Nếu Đọc thuộc tính: CX : ch a thu c tính tập tin Hàm 4Ch K t thúc ch ng trình tr v DOS 153 11 12 Vào Không Ra Không Hàm 56h Đ i tên tập tin Vào DS:DX ← Đ a ch chu i tên tập tin cũ ES:DI ← Đ a ch chu i tên tập tin m i Ra Không 6.4.4 Ngắt c a BIOS INT 10h: Ngắt cho hình Hàm 0: Chọn ch đ hiển th cho hình Vào: AH=0, AL = Ch đ Ra: Không Hàm 1h: Thay đ i kích th c tr Vào: AH=1h bit thấp c a CH = dòng quét đầu bit cao c a CH = dòng quét cu i Ra: Không Hàm 2h: D ch chuyển tr Vào: AH=2 BH=trang s DH= hàng DL = c t Ra: không Hàm 3h: Xác đ nh v trí kích th c hi n th i c a tr Vào AH=3, BH=trang s Ra: CH=dòng quét đầu CL=dòng quét cu i DH=dòng DL=c t Hàm 5h: Chọn trang hiển th 154 Vào: AH=5 AL=trang s DH=dòng DL=c t Ra: Không Hàm 6h:Cu n hình/c a s lên m t s dòng xác đ nh Vào: AH=6 AL = S dòng cu n (AL=0 cu n hình hay c a s ) BH=thu c tính c a dòng tr ng CH,CL=dòng,c t c a góc trái c a s DH,DL=dòng, c t c a góc phải d i Ra: Không Hàm 7: Cu n c a s hay hình xu ng Vào: AH=7 AL = S dòng cu n (AL=0 cu n hình hay c a s ) BH=thu c tính c a dòng tr ng CH,CL=dòng,c t c a góc trái c a s DH,DL=dòng, c t c a góc phải d i Ra: Không Hàm 0Ah: Vi t ký tự t i v trí tr Vào: AH=0Ah AL=Mã c a ký tự BH=Trang s CX=s lần vi t ký tự Ra: Không 6.5 M t s ví d Ví d 1: Ch ng trình nhận ký tự t bàn phím, sau cất ký tự nhận đ vào bi n DSEG SEGMENT msg DB ‘Hay nhap ky tu tu ban phim: $’ 155 c kytu DB ? ; Bi n ch a ký tự nhận đ c DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start: MOV AX, DSEG MOV DS, AX MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, msg ; DX ch a đ a ch chu icần in INT 21h ; gọi ngắt thực hi n MOV AH, 01 ; Hàm nhập ký tự, AL ch a Ký tự INT 21h MOV kytu, AL ; Cất Ký tự vào biên MOV AH, 4Ch ; thoát kh i ch ng trình INT 21h CSEG ENDS END start Ví d 2: Ch ng trình nhận ký tự t bàn phím, sau in hình ký tự k sau c a ký tự nhận đ c DSEG SEGMENT msg1 DB ‘Hay nhap ky tu tu ban phim: $’ msg2 DB 10,13,‘Ky tu ke sau ky tu nhan duoc la: $’ kytu DB ? DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start: MOV AX, DSEG MOV DS, AX MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, msg1 ; DX ch a đ a ch chu i msg1 INT 21h ; gọi ngắt thực hi n 156 MOV AH, 01 ; Hàm nhập ký tự, AL ch a Ký tự INT 21h MOV kytu, AL ; cất ký tự vào bi n MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, msg2 ; DX ch a đ a ch chu i msg2 INT 21h ; gọi ngắt thực hi n MOV DL, kytu ADD DL, ; Ký tự k sau MOV AH, 02 ; In ký tự INT 21h MOV AH, 4Ch ; thoát kh i ch ng trình INT 21h CSEG ENDS END start Ví d 3: Ch B tr ng trình nhận chu i A B t bàn phím, sau in hình c, chu i A sau DSEG SEGMENT msg1 DB ‘Hay nhap vao chuoi A: $’ msg2 DB 10,13, ‘Hay nhap vao chuoi B: $’ msg3 DB 10,13,‘Cac chuoi nhan duoc la: $’ max1 DB 30 len1 DB ? strA DB 31 DUP(‘$’) max2 DB 30 len2 DB ? strB DB 31 DUP(‘$’) DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start: MOV AX, DSEG 157 MOV DS, AX MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, msg1 ; DX ch a đ a ch chu i msg1 INT 21h ; gọi ngắt thực hi n MOV AH, 0Ah ; Nhập chu i A LEA DX, max1 INT 21h MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, msg2 ; DX ch a đ a ch chu i msg2 INT 21h ; gọi ngắt thực hi n MOV AH, 0Ah ; Nhập chu i B LEA DX, max2 INT 21h MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, msg3 ; DX ch a đ a ch chu i msg3 INT 21h ; gọi ngắt thực hi n MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, strB ; DX ch a đ a ch chu i B INT 21h ; gọi ngắt thực hi n MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, strA ; DX ch a đ a ch chu i A INT 21h ; gọi ngắt thực hi n MOV AH, 4Ch ; thoát kh i ch ng trình INT 21h CSEG ENDS END start Ví d 4: Ch ng trình ghi chu i “Welcome to Assembly!” vào tập tin m i có tên W2A.TXT DSEG SEGMENT msg1 DB ‘Da ghi xong file.$’ 158 msg2 DB ‘Welcome to Assembly!’ tenfile DB ‘D:\W2A.TXT’,0 thefile DW ? DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start: MOV AX, DSEG MOV DS, AX MOV AH, 3Ch ; T o file m i LEA DX, tenfile MOV CX, ; thu c tính bình th ng INT 21h MOV thefile, BX ; cất thẻ file MOV AH, 40h ; ghi file MOV BX, thefile MOV CX, 20 ; s byte cần ghi LEA DX, msg2 ; chu i cần ghi INT 21h MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, msg1 ; DX ch a đ a ch chu i msg1 INT 21h ; gọi ngắt thực hi n MOV AH, 3Eh ; Đóng file MOV BX, thefile INT 21h MOV AH, 4Ch ; thoát kh i ch ng trình INT 21h CSEG ENDS END start Ví d 5: Ch ch y ch ng trình xóa tập tin đĩa Tên file đ ng trình 159 c nhập t bàn phím DSEG SEGMENT msg1 DB ‘Ten file can xoa: $’ msg2 DB ‘Da xoa xong file.$’ max DB 30 len DB ? tenf DB 31 DUP(?) DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start: MOV AX, DSEG MOV DS, AX MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, msg1 ; DX ch a đ a ch chu i msg1 INT 21h MOV AH, 0Ah ; Đọc tên file LEA DX, max INT 21h XOR CX, CX ; đo n chèn giá tr vào cu i tên MOV CL, len ; tập tin LEA SI, tenf ADD SI, CX MOV [SI], CH ; CH = MOV AH, 41h ; T o file m i LEA DX, tenfile INT 21h MOV AH, 09 ; Hàm in chu i ký tự hình LEA DX, msg1 ; DX ch a đ a ch chu i msg1 INT 21h ; gọi ngắt thực hi n MOV AH, 4Ch ; thoát kh i ch INT 21h 160 ng trình CSEG ENDS END start 6.6 H p ng m t s ngôn ng bậc cao: 6.6.1 Ngôn ng C h p ng Để k t h p gi a ch ng trình vi t ngôn ng C h p ng thực hi n cách sau: a/ Vi t chen l nh h p ng ch asm [nhãn:] l nh Cú pháp: tóan h ng b/ Vi t chen kh i l nh h p ng vào ch Cú pháp: ng trình C (Inline-Assembly): ng trình C asm { [nhãn1:] l nh1 tóan h ng [nhãn2] l nh2 tóan h ng …………………… [nhãnn] l nhn tóan h ng } c/ Vi t ch Ch ng trình v i modun tách bi t ng trình đ c vi t v i ch ng trình ngu n tách bi t sau d ch liên k t để tr thành file thi hành exe Giả s ta vi t xong chu ng trình ngu n có tên viduc.c vidua.asm Ta d ch liên k t l nh: tcc viduc vidua.asm L nh s thực hi n: - Trình biên d ch C d ch file viduc.c thành file viduc.asm - Trình biên d ch C s gọi trình biên d ch Asembler d ch file vidua.asm thành file vidua.obj file viduc.asm thành viduc.obj - Trình biên d ch C s gọi trình liên k t để liên k t file để thành file thi hành exe 6.6.2 Ngôn ng Pascal h p ng T ng tự nh ngôn ng C, ngôn ng Pascal k t h p v i h p ng cách sau: 161 a/ Vi t chen l nh h p ng ch Cú pháp: ng trình Pascal (Inline-Assembly): asm [nhãn 1] l nh1 tóan h ng [nhãn 2] l nh2 toán h ng …………… [nhãn n] l nhn tóan h ng End; b/ Vi t ch ng trình file tách bi t: Có thể vi t ch ng trình file tách bi t sau d ch liên k t chúng để t o file thi hành exe 162 TÀI LI U THAM KH O [1] Ths Ph m Văn C ng, Lập trình hệ thống điều khiển thiết bị, Học vi n B u Vi n thông, 2006 [2] Nguy n M nh Giang, Lập trình ngôn ngữ Assembly, NXB Giáo dục 2004 [3] Nguy n H a Duy Khang - Trần H u Danh, Giáo trình lập trình hệ thống, Tr ng Đ i học Cần Th , 2008 [4] Phan Văn Nghĩa, Giáo trình Kiến trúc máy tính hợp ngữ, Tr ng Đ i học Đà l t, 2002 [5] T ng Văn On - Hoàng Đ c Hải, Hợp ngữ lập trình ứng dụng, NXB Giáo Dục, 2001 [6] Lê Hải Sâm, Kiến trúc máy tính vi xử lý, NXB Giáo dục 2004 [7] Nguy n Minh Tuấn, Cấu trúc máy tính hợp ngữ, NXB Đà Nẳng, 1977 [8] Nguy n Quang Tân, Lập trình hợp ngữ, NXB Th ng Kê, 1977 [9]A.S.Tanenbaum - Structured Computer Organization - Fourth Edition Prentice Hall International, 1999 Bản d ch: Giáo trình Cấu trúc máy tính - T ng Văn On - NXB Giáo dục, 2000 [10] Paul A.Carter - PC Assembly Language, 2004 163 M CL C Ch ng T NG QUAN V MÁY TÍNH ĐI N T .1 1.1 Gi i thi u 1.1.1 L ch s phát triển .1 1.1.2 Phân lo i máy tính 1.2 T ch c h th ng máy tính 1.2.1 S đ cấu trúc chung 1.2.2 Ch c c c a b phận 1.2.3 Quá trình thực hi n l nh .9 1.3 Gi i thi u t ch c bên c a máy vi tính 10 1.3.1 S đ 10 1.3.2 Cấu hình đặc tr ng kỹ thuật 11 Ch ng C S S VÀ LOGIC 12 2.1 Các h th ng s dùng máy tính n t 12 2.2 Biểu di n thông tin máy tính n t 13 2.3.8 Các phép tính h nh phân .19 2.4 C s logic máy tính 24 2.4.1 Hàm Boolean bảng thật 24 2.4.2 Cực tiểu hàm Boolean 29 Ch ng 3: T CH C B X LÝ TRUNG TÂM 34 3.1 S đ kh i t ng quát c a b x lý trung tâm (CPU - Central Processing Unit) .34 3.2 ALU (Arithmetic Logic Unit): 35 2.1.4 T ch c ghi 36 3.4 Đ n v u khiển 40 3.4.1 Đi u khiển m ch n t 40 3.4.2 Đi u khiển vi ch ng trình: 41 3.5 Các b vi x lý c c a Intel 42 3.5.1 M t s đặc điểm c a vi x lý .42 3.5.2 Cách ghi d li u lên b nh .46 3.5.3 S đ t ch c c a 8088 80286 46 3.6 Ki n trúc CISC – RISC Pentium c a Intel 57 3.6.1 H vi x lý SISC (Complex Instruction Set Computer) 57 3.7 Tập l nh h p ng c a họ vi x lý 61 3.8 Đa x lý ki n trúc tiên ti n 62 3.8.1 C ch đ ng ng (pipeline) 62 3.8.2 C ch siêu phân lu ng (hyper-threading) .63 3.8.3 Kỹ thuật siêu phân lu ng đa lu ng song song (SMT -Simultaneous Multi-Threading) .65 Ch ng B NH CHÍNH 71 4.1 Các khái ni m c 71 4.3 Phân lo i b nh cấu trúc m ch nh 72 4.3.1 Phân lo i b nh .72 4.3.2 Cấu trúc m ch nh 75 164 4.4 Thi t kê modul nh 83 Ch ng QUÁ TRÌNH VÀO RA VÀ THI T B NGO I VI .85 5.1 Quá trình vào .85 5.2 T ch c u khiển vào/ra máy tính 87 5.3 Các ph ng pháp vào s li u 87 5.3.1 Vào u khiển ngắt 88 5.3.2 Vào u khiển theo DMA 89 5.4 Các m ch ghép n i u khiển thi t b vào 90 5.4.1 C ng song song (Parallel) 90 5.4.2 C ng n i ti p (Serial) .91 5.5 Các thi t b ngo i vi thông dụng h máy vi tính 92 5.5.1 B nh ngoài: 92 Ch ng H P NG .108 6.1 H p ng trình biên d ch h p ng 16 bit 108 6.1.1 Ngôn ng máy h p ng .108 6.1.2 H p ng MASM (H p ng c a CPU 8086) 109 6.1.3 Cấu trúc c a m t hàng l nh 110 6.1.3 Toán h ng toán t 119 6.2 Cấu trúc c a ch ng trình h p ng .123 6.2.1 Cấu trúc chung .123 6.2.2 Tập tin thi hành d ng COM 125 6.2.3 Tập tin thi hành d ng EXE 126 6.2.4 Ví dụ .127 6.2.5 Cách t o ch ng trình h p ng 129 6.3 M t s l nh c a h p ng 16 bit 129 6.3.1 Toán h ng .129 6.3.2 Nhóm l nh chép d li u, đ a ch : 131 6.3.3 Nhóm l nh tính toán s học .132 6.3.4 Nhóm l nh logic ghi d ch 134 6.3.5 Nhóm l nh vào ngo i vi .137 6.3.6 Nhóm l nh h th ng 138 6.3.7 Nhóm l nh nhảy (Chuyển u khiển) 138 6.3.8 Nhóm l nh lặp .144 6.4 M t s ngắt c a DOS BIOS 147 6.4.1 T ng quan v ngắt 147 6.4.2 S dụng ngắt h p ng 148 6.4.3 Ngắt MS-DOS .148 6.4.4 Ngắt c a BIOS .154 6.5 M t s ví dụ 155 6.6 H p ng m t s ngôn ng bậc cao: 161 6.6.1 Ngôn ng C h p ng 161 6.6.2 Ngôn ng Pascal h p ng 161 165 ... sở cho nhiều dự báo hiệu suất ngành công nghiệp máy tính 1.1.2 Phân lo i máy tính Máy tính ngày chia thành lo i: Siêu máy tính, Mainframe, siêu máy tính mini, máy tính mini, máy tính cá nhân Máy. .. i: Máy tính để bàn, máy tính xách tay máy tính b túi 1.2 T ch c h th ng máy tính 1.2.1 S đ cấu trúc chung 1.2.1.1 Nguyên lý máy Von Neumann Vào nh ng năm c a thập niên 40 c a th kỷ 20, máy tính. .. 10 ch s Dòng máy tính Von Neumann đ c k th a phát triển hầu h t th h máy tính sau Đ i di n cho máy Von neumann th i có máy IAS dựa c s máy EDVAC, m t phiên nâng cao c a ENIAC Máy IAS có b nh