Giáo trình Kiến trúc máy tính và hợp ngữ - Trần Văn Chinh trang bị cho người học tổng quan về máy tính điện tử; cơ sở và logic; tổ chức bộ xử lý trung tâm; bộ nhớ chính; quá trình vào ra và thiết bị ngoại vi; hợp ngữ.
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 ln phải tính tố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 tố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 tốn Đây thi t b hồn tồ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í hồ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à cịn 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 tố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 tốn – calculator) B l u tr (b nh ), Thành phần xuất (in đục l ) B tính tố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 khơng thể hồ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 tố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 tố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 hồ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 tố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 tố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 q 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 tố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 tốn h ng cần cho vi c tính tố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 tố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 ln ln 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 ngồi hay cịn 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 qt 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 ngồi 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ịn 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, cịn 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 tố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 tố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) Tố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 tố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 qt 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 ; 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 ; 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 ; 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 tố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 tố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 ... 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... 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... đĩ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à: