Giáo trình TASM

114 363 0
Tài liệu đã được kiểm tra trùng lặp
Giáo trình TASM

Đ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

Giáo trình TASM

1 CHƯƠNG 1 : SỐ NHỊ PHÂN Trong Computer dữ liệu được ghi nhớ bằng các mạch điện có khả năng thể hiện một số trạng thái xác đònh . Mỗi mạch điện như vậy là một phần tử nhớ căn bản . Số giá trò một phần tử nhớ căn bản có thể biểu diễn cũng chính là số trạng thái mạch điện tạo nên nó có thể xác đònh. Do khả năng của kỹ thuật chế tạo mạch, và cũng do giá thành của mạch điện, các phần tử nhớ trên các Computer hiện nay đều được thiết lập từ các mạch điện có hai trạng thái xác đònh bởi mức điện thế cao và thấp. Tương ứng với hai trạng thái của mạch điện, mỗi phần tử nhớ mang một trong hai giá trò 0 và 1. Một phần tử nhớ như vậy được gọi là một bit . * Các toán tử trên bit : A B NOT A A AND B A OR B A XOR B A XOR (A XOR B) 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 1 0 1 1.1_ ĐƠN VỊ LƯU CHỨA THÔNG TIN: Để có thể biểu diễn được nhiều giá trò hơn, thông thường người ta lưu chứa thông tin dưới dạng từng nhóm bit, mỗi nhóm biểu thò cho một phần tử của thông tin. - Một nhóm 4 bit được gọi là nibble. - Một nhóm 8 bit được gọi là byte. Byte là đơn vò lưu chứa thông tin cơ sở trên các Computer hiện nay. Các bội số của byte là : 1 KB = 1024 byte ( 2 lũy thừa 10 ) 1 MB = 1024 KB 1 GB = 1024 MB - Một nhóm 16 bit được gọi là word. - Một nhóm 32 bit được gọi là double word (dword). Computer truy nhập đến các thông tin theo đơn vò nhỏ nhất là byte . 1.2_HỆ ĐẾM: Các giá trò số lưu chứa trong Computer dưới dạng từng nhóm các bit với cách biểu diễn 0 và 1 khác hẳn cách biểu diễn số thông thường của chúng ta (dùng các ký số 0,1 .9). Cách biểu diễn số của chúng ta dựa trên cơ sở mười ký số 0,1 .9 được gọi là hệ đếm thập phân, cách biểu diễn số trong Computer dựa trên cơ sở hai ký số 0 và 1 được gọi là hệ đếm nhò phân. 1.2.1_Quy tắc của một hệ đếm theo vò trí: Hệ đếm của chúng ta hiện nay là một hệ đếm theo vò trí, dựa trên cơ sở mười ký số 0,1 .9. Giá trò của một số được biểu diễn bằng một dãy các ký số, trong đó giá trò của mỗi ký số tùy thuộc vào vò trí của nó ở trong dãy. Thí dụ : 1 9 7 4 3 5 1*100000 + 9*10000 + 7*1000 + 4*100 + 3*10 + 5 105 104 103 102 101 10 2 Gọi số các ký hiệu để biểu diễn một hệ đếm theo vò trí gọi là cơ số C của hệ đếm ta có công thức tổng quát : x = Σ Ci * Ki (Ki là các ký số của hệ đếm) 1.2.2_Các hệ đếm thông dụng : Hệ nhò phân : sử dụng các ký số 0 và 1 (bin : binary ) Hệ bát phân : sử dụng các ký số 0,1 .7 (Oct: ) Hệ thập phân: sử dụng các ký số 0,1 .9 (dec : decimal) Hệ thập lục : sử dụng các ký số 0,1 .9,A F (hex : hexa ) Bảng đối chiếu các hệ đếm: Dec Hex Bin Dec Hex Bin 0 0 0000 8 8 1000 1 1 0001 9 9 1001 2 2 0010 10 A 1010 3 3 0011 11 B 1011 4 4 0100 12 C 1100 5 5 0101 13 D 1101 6 6 0110 14 E 1110 7 7 0111 15 F 1111 1.2.3_Quy ước biểu diễn các hệ đếm : • Các số dạng bin kết thúc bằng b. • Các số dạng hex kết thúc bằng h. • Các số hex nên bắt đầu bởi ký số 0 (bắt buộc khi ký số đầu tiên là A F). Thí dụ : 1991, 01000101b, 0F1h, 078h. Việc sử dụng hệ nhò phân trên Computer gặp một số khó khăn : để biểu diễn một giá trò cần quá nhiều ký số làm cho người sử dụng phải ghi chép nhiều và rất khó nhớ. Từ nhận xét : hệ nhò phân là một hệ con hoàn toàn của hệ thập lục: tập hợp 4 bit nhò phân có thể biểu diễn 16 giá trò số khác nhau ( 24 ), người ta thường dùng các ký số thập lục (0,1 9,Ạ.Z) để biểu diễn thay cho từng nhóm 4 bit trong một số nhò phân. 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 1 F A 4 D 1.3_ CÁC PHÉP TÍNH TRÊN HỆ NHỊ PHÂN Các phép tính cơ bản + - * / trên số nhò phân được thực hiện với các quy tắc như trên hệ thập phân . Tuy vậy, phải chú ý rằng các số nhò phân lưu trong Computer được ghi nhận bằng một số các bit xác đònh : có số các ký số xác đònh. Do đó các phép tính chỉ có thể thực hiện trên khuôn khổ các là các bit tràn . Các số nhò phân chúng ta đề cập kế tiếp là các số nhò phân được lưu trong một số bit xác đònh (8,16,32), tức là có chiều dài không đổi . 1.3.1_Phép cộng nhò phân: 3 Quy tắc : 0 + 0 = 0 0 + 1 = 1 1 + 1 = 0 nhớ 1 ( 10 ) Thí dụ : 1 0 0 1 1 0 1 1 1 1 0 1 0 1 1 1 + + 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 1 ______________ ________________ 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 Bít tràn 1.3.2_Phép trừ nhò phân: Quy tắc : 0 - 0 = 0 1 - 1 = 0 1 - 0 = 1 0 - 1 = 1 nhớ 1 Thí dụ : 1 0 0 1 1 0 1 1 1 1 0 1 0 1 1 1 - - 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 1 _____________ ______________ 0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1.3.3_Phép nhân nhò phân: Quy tắc : 0 * 0 = 0 0 * 1 = 0 1 * 1 = 1 Thí dụ : 1 1 0 1 0 1 1 1 x 1 0 1 ____________ 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 ___________________ 1 0 0 0 0 1 1 0 0 0 1 1.3.4_Phần bù nhò phân: Phần bù của một số nhò phân được đònh nghóa là một số nhò phân được tạo thành từ số ban đầu theo quy tắc các bit đều được đảo ngược (NOT). Thí dụ : phần bù của 01001101 là 10110010 4 0 1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 <--- Phần bù Một số cộng với phần bù của nó sẽ cho kết quả là một giá trò nhò phân có tất cả các bit bằng 1 . Phần bù của một số nhò phân cũng được gọi là bù 1 của số nhò phân đó. 1.4_SỐ ÂM TRONG HỆ NHỊ PHÂN: Các số nhò phân trên là các số không dấu (nguyên dương). Để biểu diễn số có dấu (nguyên âm) ta không thể đơn thuần thêm một dấu trừ trước một số nhò phân bởi vì Computer chỉ có hai ký hiệu 0 và 1 để ghi nhớ thông tin! Yêu cầu cần phải có một cách mô tả các số âm cũng trên cơ sở các ký hiệu 0 và 1 đã phát sinh từ đây . Người ta đònh nghóa số âm qua khái niệm số đối trong đại số : một số khi cộng với số đối của nó sẽ bằng 0. Như vậy số nhò phân biểu diễn cho giá trò -3 phải là một số khi cộng với số nhò phân biểu diễn cho giá trò +3 tạo ra kết quả là 0 . Từ nhận xét một số cộng với phần bù của nó sẽ cho kết quả là một số nhò phân có tất cả các bit đều bằng 1, ta có kết luận sau: số-nhò-phân + phần-bù + 1 = 0 ( có một bit tràn ! ) ===> số đối = phần bù + 1 ( bù 2 ) Trong quá trình xác đònh cách ký hiệu cho các số âm người ta nhận thấy các số âm tạo thành bao giờ cũng có bit cao nhất là 1, và các số dương tương ứng có bit cao nhất là 0 . Các nhận xét trên đưa đến các hệ quả về số nhò phân có dấu như sau : • Các số âm bao giờ cũng có bit cao nhất là 1 . • Một số âm cộng số đối tương ứng của nó sẽ cho kết quả là 0 . • Các số có dấu cộng với nhau sẽ cho kết quả đúng như phép cộng các số nguyên ( Hãy chứng minh -3+2 = -1 ) . 5 CHƯƠNG 2 : CẤU TRÚC MỘT MÁY VI TÍNH IBM PC 2.1_BỘ XƯÛ LÝ TRUNG ƯƠNG Trung tâm của một máy vi tính IBM PC là bộ xử lý trung ương (CPU) 8088 do Intel sản xuất . 8088 là một vi mạch đặc biệt, có khả năng tự thực hiện một loạt các mệnh lệnh được liệt kê trước,có khả năng tự phán đoán để chọn cách đáp ứng với các tình huống trong quá trình thực hiện lệnh. Mỗi mệnh lệnh 8088 được biểu thò bằng một nhóm các byte. Các byte ấy được gọi là mã lệnh (opcode) của bộ xử lý . Khi thực hiện công việc của mình CPU đọc các mã lệnh được lưu chứa trong bộ nhớ của máy tính và thực hiện chúng theo thứ tự liên tiếp nhau. 2.2_BỘ NHỚ Bộ nhớ là nơi lưu chứa các mệnh lệnh mà CPU sẽ phải thực hiện,cũng là nơi ghi nhớ các thông tin, các giá trò trung gian, các kết quả của quá trình làm việc . Bộ nhớ được tạo thành từ hai loại chính : - Bộ nhớ chỉ đọc - ROM (Read Only Memory) - Bộ nhớ đọc/ghi - RAM (Random Access Memory) Các thông tin ghi trên ROM là cố đònh và không xóa được: mang tính chất “vónh cửu” Các thông tin trên RAM có thể được sửa đổi tùy thích, nhưng những gì đang được lưu giữ trong RAM sẽ mất đi khi tắt máy. Trong một máy tính, mỗi phần tử nhớ thuộc ROM hoặc RAM được ghi nhận bởi một số thứ tự (gọi là đòa chỉ). 2.3_CÁC MẠCH HỖ TR Để có thể hoạt động được, CPU cần đến sự hỗ trợ của nhiều vi mạch khác. Đồng thời, CPU cũng không thể giao tiếp với người sử dụng bằng các giá trò nhò phân biểu diễn dưới dạng các xung điện . Nó phải nhờ đến các mạch giao diện (Interface) như keyboard controller,video controller . Các mạch giao diện này sẽ điều động trực tiếp đến các phương tiện giao tiếp cụ thể với người sử dụng (như màn hình,bàn phím,máy in .) theo các yêu cầu,các thông tin được gởi đến từ CPU. 2.4_PORT Để liên lạc với các vi mạch hỗ trợ,các mạch giao diện, CPU dùng một hệ thống đòa chỉ riêng ( khác với hệ thống đòa chỉ đònh vò của bộ nhớ ) để xác đònh đối tượng cần đối thoại . Mỗi đòa chỉ trong hệ thống này được gọi là một cổng (port) . Mỗi vi mạch hỗ trợ, mỗi mạch giao diện sẽ chiếm dụng một số cổng xác đònh . Khi cần giao tiếp, CPU chỉ cần sử dụng đến các cổng tương ứng. SYSTEM BUS TIMER CLOCK CPU MEMORY DMA INTERRUPT CONTROLLER VIDEO CONTROLLER KEYBOARD CONTROLLER IO INTERFACE HARD DISK CONTROLLER DISKETTE CONTROLLER 6 2.5_CLOCK Các mạch điện ít khi nào có thời gian thực hiện giống nhau. Do đó, để các phần tử trong một máy tính hoạt động nhòp nhàng ăn khớp với nhau phải có một bộ phận đếm nhòp . Đảm nhiệm công việc này là một bộ phận tạo xung nhòp cho tất cả các mạch điện trong máy . Bộ phận này được gọi là đồng hồ của máy . Máy có đồng hồ với tần số càng cao thì sẽ chạy càng nhanh. 2.6_BUS CPU và các mạch có liên quan được nối song song với một dải các kênh liên lạc, nguồn cung cấp điện . cấu trúc này được gọi là bus. Bus được chia thành 4 phần chính: 1. Command bus 2. Address bus 3. Data bus 4. Power bus Hệ thống quản lý bus gọi là Bus controller Giao tiếp thông qua bus được thực hiện như sau : Giả sử CPU cần tăng giá trò từ một phần tử nhớ tại đòa chỉ X lên 1 đơn vò, nó phải trải qua các bước sau : 1. Đặt đòa chỉ X vào address bus 2. Đưa yêu cầu đọc memo vào command bus 3. Đợi Bus thông báo sẵn sàng : bus controller lấy giá trò tại đòa chỉ X đặt vào Data bus 4. Tiếp nhận giá trò cần đọc từ data bus 5. Tăng giá trò ấy lên 1 ( phép toán được thực hiện trong CPU ) 6. Đặt giá trò mới trở lại data bus 7. Đưa yêu cầu ghi memo vào command bus (address bus đang giữ giá trò cũ) 7 8. CHƯƠNG 3 : BỘ VI XƯÛ LÝ 8088 3.1_CÁC THANH GHI CỦA BỘ VI XƯÛ LÝ 8088 Bộ vi xử lý 8088 có một số phần tử dùng để ghi nhớ các giá trò trung gian trong quá trình làm việc,tạo ra các đòa chỉ,làm các phép tính .Các phần tử này gọi là các thanh ghi (Register). 8088 là bộ vi xử lý 16 bit, các tác vụ của 8088 thường dược thực hiện trên 16 bit dồng thời,các thanh ghi của 8088 đều là các phần tử nhớ 16 bit.Các thanh ghi hoàn toàn có thể sử dụng như các phần tử nhớ thuộc về RAM. Điểm khác nhau giữa thanh ghi và các phần tử nhớ thuộc RAM là Thanh ghi là các phần tử thuộc bộ vi xử lý (về mặt vật lý). Một số tác vụ đặc biệt như nhân hay chia, kết quả bắt buộc phải đặt trong thanh ghi Một số thanh ghi chỉ dùng để xác đònh đòa chỉ cho 8088 Các tác vụ trên thanh ghi nhanh hơn nhiều so với các tác vụ trên RAM. Bởi vì để thực hiện các tác vụ trên RAM,8088 phải đi qua một quá trình như sau : a) Đọc thông tin từ RAM (thông qua Bus) b) Thực hiện tác vụ c) Ghi trả lại thông tin vào RAM (thông qua Bus) Bộ vi xử lý 8088 có 14 thanh ghi 16 bit,được chia thành nhóm theo chức năng như sau: 3.1.1_Nhóm thanh ghi đa dụng : AX,BX,CX,DX : Mỗi thanh ghi có thể sử dụng như hai thanh ghi 8 bit với các tên AH,AL,BH,BL,CH,CL,DH,DL F E D C B A 9 8 7 6 5 4 3 2 1 AH AL AX BH BL BX CH CL CX DH DL DX 3.1.2_Nhóm thanh ghi con trỏ và chỉ mục : SP,BP,SI,DI : thường dùng để tạo các đòa chỉ, cũng có thể dùng để lưu chứa các số liệu như nhóm thanh ghi đa dụng 3.1.3Nhóm thanh ghi phân đoạn : CS,DS,SS,ES : Chỉ dùng để xác đònh Segment, không cho phép thực hiện các phép tính số học,logic . 3.1.4Thanh ghi con trỏ lệnh IP : Chỉ dùng để xác đònh offset của mã lệnh 3.1.5Thanh ghi cờ hiệu Flag : Ghi lại trạng thái của các phép tính số học, kết quả của các phép so sánh . F E D C B A 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF 3.2CÁCH XÁC ĐỊNH ĐỊA CHỈ CỦA 8088 8 Bộ vi xử lý 8088 dùng một số 20 bit để xác đònh đòa chỉ cho các phần tử trong vùng nhớ (memory), tương đương với 1MB vò trí. Bằng các giá trò 16 bit,ta chỉ có thể tạo ra đòa chỉ cho 0FFFFh phần tử ( 64 KB hay 65536 byte ). Do đó để có thể đònh vò 1 MB đòa chỉ bằng các thanh ghi 16 bit, 8088 sử dụng nguyên tắc truy nhập bộ nhớ theo từng segment,mỗi segment có kích thước 64 KB, điểm bắt đầu của segment phải là một đòa chỉ chia hết cho 010h ( 16 thập phân ) . Đòa chỉ của segment được tính bằng paragraph ( 1 paragraph = 16 byte ). Đòa chỉ một phần tử nào đó thuộc đoạn sẽ được xác đònh thông qua đòa chỉ tương đối (offset) của phần tử đó trong đoạn và vò trí của đoạn . Từ nguyên tắc trên, ta có các kết quả sau : Đòa chỉ 20 bit = Segment*16 + Offset Cách biểu diễn : Segment:offset Cùng một đòa chỉ, có thể biểu diễn dưới nhiều hình thức khác nhau. Thí dụ: 0040:006C và 0000:046C là hai cách biểu diễn một đòa chỉ Segment chỉ là khái niệm logic, do đó không có vò trí cố đònh cho từng segment . Ta hoàn toàn có thể mô tả các segment phủ lấp lên nhau. Bộ vi xử lý 8088 luôn xác đònh segment thông qua giá trò của các thanhghi segment. Do đó để xác đònh segment ta phải gán các giá trò tương ứng cho các thanh ghi segment. Thanh ghi CS chỉ đònh segment của đoạn mã chương trình đang thực hiện,IP mang giá trò offset. Vì vậy CS:IP luôn là đòa chỉ của lệnh đang được thực hiện. Thanh ghi DS chỉ đònh segment của dữ liệu,thông thường các đòa chỉ đều được căn cứ theo segment DS . Thanh ghi SS chỉ đònh segment của STACK ( sẽ nói rõ hơn trong phần sau). Thanh ghi ES dùng trong các tác vụ về chuỗi hoặc theo yêu cầu riêng. 3.3CÁC XÁC ĐỊNH OFFSET CỦA 8088 Offset của bộ vi xử lý 8088 được xác đònh theo nguyên tắc sau : Offset là một hằng số TD : [046Ch] Offset là giá trò của một trong các thanh ghi chỉ mục BX,SI,DI,BP TD : [BX] Offset là giá trò của một tổng được tạo thành từ các hằng số,các thanh ghi chỉ mục . Nguyên tắc này có một số hạn chế : - SI và DI không được cùng có mặt trong tổng - BX và BP không được cùng có mặt trong tổng TD : [SI+BX] [DI+BX+020h] TD : [SI+BP+041h] Segment mặc nhiên : khi xác đònh một đòa chỉ, không phải lúc nào ta cũng phải chỉ ra thanh ghi segment nào sẽ được sử dụng . Nếu không có chỉ đònh cụ thể thanh ghi segment, các offset tạo thành từ các hằng số và các thanh ghi chỉ mục BX,SI,DI luôn được hiểu là đi kèm với thanh ghi segment DS . Offset được tạo thành từ BP được hiểu là đi kèm với thanh ghi SS Nếu chúng ta chỉ đònh rõ ràng thanh ghi segment đi kèm với offset, các giá trò mặc nhiên về segment sẽ bò vô hiệu hoá . 3.4 BỘ 8088 THỰC HIỆN MỘT CHƯƠNG TRÌNH RA SAO ? 3.4.1Thế nào là một chương trình : Chương trình là một tập hợp các mã lệnh và các dữ liệu . Mã lệnh (code) : là các lệnh 8088 sẽ thực hiện Dữ liệu (data) : là các thông tin chương trình sẽ sử dụng đến .Thí dụ : chương trình của bạn sẽ in 9 dòng chữ “Do you like me ?” ra màn hình thì dòng chữ ấy phải có mặt trong chương trình của bạn. Vùng lưu chứa dòng chữ này trong chương trình được gọi là một vùng dữ liệu (data) . Chương trình của bạn cũng cần đến một số vùng nhớ để lưu chứa các giá trò trong quá trình chương trình được thực hiện, các vùng nhớ này cũng được gọi là vùng dữ liệu . Phải chú ý, bộ 8088 không thể phân biệt đâu là code, đâu là data ! 3.4.2Cách thức 8088 thực hiện một chương trình : Giả sử đã có chương trình trong RAM và CS:IP chỉ đến lệnh đầu tiên của chương trình . 8088 đọc byte xác đònh bởi CS:IP,nhận diện lệnh, từ đó suy ra chiều dài của lệnh . 8088 cộng thêm vào IP chiều dài của lệnh, rồi bắt đầu thực hiện lệnh . Sau khi thực hiện lệnh, 8088 đọc tiếp byte đang được xác đònh bởi CS:IP và cứ thế quá trình này lặp đi lặp lại mãi . Chương trình của chúng ta được thực hiện từ lệnh đầu tiên đến lệnh cuối cùng theo phương cách này . Nhưng làm cách nào để đưa một chương trình vào RAM và làm cách nào để ấn đònh CS:IP chỉ đến lệnh đầu tiên của chương trình ấy ? Tất cả các tác vụ này đều do hệ điều hành thực hiện . Chương trình của chúng ta được lưu chứa trên đóa thành một file có phần mở rộng (đuôi đặc tính) là COM hay EXE . Khi ta gõ từ bàn phím tên của file này và nhấn ENTER, hệ điều hành sẽ đọc file ấy vào RAM, sau đó đưa vào CS và IP các giá trò để CS:IP chỉ vào lệnh đầu tiên của chương trình vừa được nạp vào. Sau đó là quá trình thực hiện chương trình của chúng ta như đã nêu trên. Làm cách nào để kết thúc chương trình của chúng ta ? Như đã nêu trên, 8088 không ngừng đọc và phân giải các lệnh theo đòa chỉ được CS và IP xác đònh,do đó kết thúc một chương trình nào đó không có nghóa là 8088 ngừng hoạt động (!) . Quá trình kết thúc một chương trình được thực hiện bằng cách làm cho CS:IP chỉ vào một điểm xác đònh trước trong vùng mã của hệ điều hành ( còn gọi là chuyển điều khiển cho hệ điều hành ) . Sau đó là quá trình đợi lệnh của hệ điều hành . Quá trình đợi lệnh của hệ điều hành như chúng ta nhìn thấy, có vẻ như “máy tính đang ngừng làm việc,chờ chúng ta ra lệnh tiếp” ! Đây là điều lầm tưởng của nhiều người mới bắt đầu làm quen với Computer. Chúng ta phải luôn nhớ rằng máy tính liên tục phân giải và thực hiện các lệnh được CS:IP chỉ đến và chỉ ngừng khi chúng ta . tắt máy ! 3.4.3Chúng ta tạo ra chương trình bằng cách nào : Các mã lệnh trong chương trình của chúng ta là các số nhò phân biểu diễn thành từng byte . Chúng ta sẽ rất khó khăn nếu phải viết một chương trình bằng từng số nhò phân như vậy . Trong thực tế chúng ta sẽ viết một chương trình nguồn, đó là một file với các đặc điểm : - Sự trình bày tuân thủ theo một số quy tắc chung - Mỗi lệnh của 8088 sẽ được gọi bằng một cái tên gợi nhớ . - Các đòa chỉ được xác đònh bởi các tên riêng do người viết quy đònh - Chương trình nguồn sẽ được một chương trình đặc biệt biên dòch (compile) thành một file với đầy đủ các mã lệnh và các dữ liệu đã mô tả trong chương trình nguồn . Vì vậy chúng ta không cần phải thắc mắc lệnh này hoặc lệnh kia có mã máy là gì ! 3.4.4Một chương trình nguồn sẽ được biên dòch bằng Assembler 86 : Code Segment Assume CS:Code,DS:Code org 0100h Main proc near M1: mov dx,offset chuoi1 ; in chuoi1 ra màn hình mov ah,9 ; int 021h ; mov ah,1 ; Read Keyboard 10 int 021h ; cmp al,’Y’ ; Kiểm tra ký tự dọc vào je KT ; nếu là ‘Y’ hay ‘y’ thì nhảy dến KT cmp al,’y’ je KT mov ah,02 ; Nếu không, Beep một tiếng rồi quay lại M1 mov dl,7 int 021h ; jmp M1 KT: mov dx,offset chuoi2 ; In chuoi2 mov ah,9 ; int 021h ; int 020h ; Kết thúc chương trình Main endp Chuoi1 db 13,’Do you like me ? $’ ; Mã 13 để trở về đầu dòng Chuoi2 db ‘ Thank you !$’ Code ends end main [...]... đầu tiên của chương trình vừa được nạp vào. Sau đó là quá trình thực hiện chương trình của chúng ta như đã nêu trên. Làm cách nào để kết thúc chương trình của chúng ta ? Như đã nêu trên, 8088 không ngừng đọc và phân giải các lệnh theo địa chỉ được CS và IP xác định,do đó kết thúc một chương trình nào đó không có nghóa là 8088 ngừng hoạt động (!) . Quá trình kết thúc một chương trình được thực hiện... trong chương trình của bạn. Vùng lưu chứa dòng chữ này trong chương trình được gọi là một vùng dữ liệu (data) . Chương trình của bạn cũng cần đến một số vùng nhớ để lưu chứa các giá trị trong quá trình chương trình được thực hiện, các vùng nhớ này cũng được gọi là vùng dữ liệu . Phải chú ý, bộ 8088 không thể phân biệt đâu là code, đâu là data ! 3.4.2Cách thức 8088 thực hiện một chương trình : Giả... khi chúng ta tắt máy ! 3.4.3Chúng ta tạo ra chương trình bằng cách nào : Các mã lệnh trong chương trình của chúng ta là các số nhị phân biểu diễn thành từng byte . Chúng ta sẽ rất khó khăn nếu phải viết một chương trình bằng từng số nhị phân như vậy . Trong thực tế chúng ta sẽ viết một chương trình nguồn, đó là một file với các đặc điểm : - Sự trình bày tuân thủ theo một số quy tắc chung - Mỗi... trình : Giả sử đã có chương trình trong RAM và CS:IP chỉ đến lệnh đầu tiên của chương trình . 8088 đọc byte xác định bởi CS:IP,nhận diện lệnh, từ đó suy ra chiều dài của lệnh . 8088 cộng thêm vào IP chiều dài của lệnh, rồi bắt đầu thực hiện lệnh . Sau khi thực hiện lệnh, 8088 đọc tiếp byte đang được xác định bởi CS:IP và cứ thế quá trình này lặp đi lặp lại mãi . Chương trình của chúng ta được thực... địa chỉ được xác định bởi các tên riêng do người viết quy định - Chương trình nguồn sẽ được một chương trình đặc biệt biên dịch (compile) thành một file với đầy đủ các mã lệnh và các dữ liệu đã mô tả trong chương trình nguồn . Vì vậy chúng ta không cần phải thắc mắc lệnh này hoặc lệnh kia có mã máy là gì ! 3.4.4Một chương trình nguồn sẽ được biên dịch baèng Assembler 86 : Code Segment Assume... của chúng ta được thực hiện từ lệnh đầu tiên đến lệnh cuối cùng theo phương cách này . Nhưng làm cách nào để đưa một chương trình vào RAM và làm cách nào để ấn định CS:IP chỉ đến lệnh đầu tiên của chương trình ấy ? Tất cả các tác vụ này đều do hệ điều hành thực hiện . Chương trình của chúng ta được lưu chứa trên đóa thành một file có phần mở rộng (đuôi đặc tính) là COM hay EXE . Khi ta gõ từ bàn... chương trình được thực hiện bằng cách làm cho CS:IP chỉ vào một điểm xác định trước trong vùng mã của hệ điều hành ( còn gọi là chuyển điều khiển cho hệ điều hành ) . Sau đó là quá trình đợi lệnh của hệ điều hành . Quá trình đợi lệnh của hệ điều hành như chúng ta nhìn thấy, có vẻ như “máy tính đang ngừng làm việc,chờ chúng ta ra lệnh tiếp” ! Đây là điều lầm tưởng của nhiều người mới bắt đầu làm quen... vụ chuỗi ta cần làm : mov cx,n rep <tác vụ chuỗi> Tiền tố REPE (repeat while equal) : giống REP nhưng sẽ kết thúc quá trình lặp bất cứ khi nào phép so sánh có kết quả không bằng xảy ra. Tiền tố REPNE (repeat while not equal) : giống REP nhưng sẽ kết thúc quá trình lặp bất cứ khi nào phép so sánh có kết quả bằng xảy ra. REPE và REPNE thường được dùng với SCASB/SCASW hoặc CMPSB/CMPSW 7.7CHUỖI... L3: 6.4.4Kỹ thuật nhân và chia trên số nhị phân Tác vụ nhân và chia thường chiếm nhiều thời gian thực hiện hơn các tác vụ cộng trừ, shift Do đó các chương trình assembler thường cố gắng chuyển các tác vụ nhân chia thành những đoạn chương trình chỉ gồm các tác vụ cộng trừ và shift, rol Ta có các số tính chất sau : - Shift left 1 bit trên một giá trị nhị phân cho kết quả tương tự nhân giá trị... far, trước tiên CS được cất vào stack, kế tiếp là IP . Sau đó cả IP lẫn CS đều được gán giá trị mới . Khi thực hiện một RET far, trước tiên IP được lấy ra từ stack, kế tiếp là CS . 5.2.3Quy định của trình hợp dịch về NEAR và FAR Nếu procedure-A là NEAR thì mặc nhiên các lệnh RET thuộc procedure-A là NEAR và các lời gọi tới procedure-A (CALL procedure-A) là NEAR Nếu procedure-B là FAR thì mặc nhiên . chương trình được gọi là một vùng dữ liệu (data) . Chương trình của bạn cũng cần đến một số vùng nhớ để lưu chứa các giá trò trong quá trình chương trình. của chương trình vừa được nạp vào. Sau đó là quá trình thực hiện chương trình của chúng ta như đã nêu trên. Làm cách nào để kết thúc chương trình của chúng

Ngày đăng: 06/09/2012, 14:51

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

  • Đang cập nhật ...

Tài liệu liên quan