Giáo trình assembly pot

90 2.1K 37
Giáo trình assembly pot

Đ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 Assembly 1 1 2 2 Chương 1: MỞ ĐẦU 1.1. Nhắc lại các hệ đếm 1.1.1. Các hệ đếm Trong cuộc sống hàng ngày chúng ta thường dùng hệ cơ số 10 – hệ đếm được hình thành từ 10 kí số từ 0 đến 9 - để biểu diễn các giá trị số. Điều này rất tự nhiên vì từ xa xưa con người bình thường đã biết dùng 10 ngón tay của mình để như là một công cụ tính toán sơ đẳng. Trong thế giới máy tính thì khác, do máy tính được cấu tạo nên từ các mạch điện tử và các mạch này chỉ có hai trạng thái có điện và không có điện. Do đó để biễu diễn một giá trị số trong máy tính người ta sử dụng hệ đếm cơ số hai hay hệ đếm nhị phân (Binary number system). Trong hệ đếm này chỉ tồn tại hai chữ số 0 và 1 tương ứng với hai trạng thái có điện và không có điện của các mạch điện tử. Nếu dùng hệ cơ số hai để biểu diễn các số có giá trị lớn sẽ gặp bất tiện là số hệ hai thu được quá dài, thí dụ:255 = 1111 1111 Để viết kết quả biễu diễn các số cho gọn lại người ta sử dụng các các hệ đếm khác như hệ cơ số 8(bát phân) và hệ cơ số 16 (thập lục, hexa). Bảng sau đây trình bày một số hệ đếm cơ bản: Hệ đếm Cơ số Số kí số và kí tự Dạng kí số và kí tự Nhị phân (Binary) 2 2 0,1 Bát phân (Octal) 8 8 0,1,2,3,4,5,6,7 Thập phân (Decimal) 10 10 0,1,2,3,4,5,6,7,8,9 Thập lục phân(Hexadecimal) 16 16 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F Bảng 1.1. Các hệ đếm cơ bản Ngoài ra, hệ đếm BCD còn được sử dụng để biểu diễn các số từ 0 đến 9 với 4 bit (4 bit=1 nibble) nhị phân. 1.1.2. Chuyển đổi số giữa các hệ đếm 1.1.2.1. Chuyển đổi giữa hệ thập phân và hệ nhị phân a. Chuyển từ hệ thập phân sang hệ nhị phân Quy tắc: Lấy phần nguyên chia cho 2 và ghi lại phần dư, tiếp tục lấy thương chia cho 2 và ghi lại phần dư. Lặp lại quá trình cho đến khi thương bằng 0. Sau đó viết các số dư theo chiều từ phép chia cuối cùng đến phép chia đầu tiên. Thí dụ: 3 3 33 2 1 16 2 0 8 2 0 4 2 0 2 2 0 1 2 1 0 (33)10 = (100001)2 0 0 1 0,125 x 2 = 0,250 x 2 = 0,50 x 2 = (0,125)10 = (0,001)2 ,250 ,50 ,0 Hình 1.1. Cách đổi một số hệ mười sang hệ hai Quy tắc đổi số thập phân hệ mười sang hệ hai: Lấy số cần đổi nhân với 2, tích gồm phần nguyên và phần lẻ. Lấy phần lẻ nhân tiếp với 2 cho đến khi nào tích thu được bằng 1 thì dừng lại. Chọn riêng phần nguyên của các tích thu được và viết theo thứ tự từ phép nhân đầu tiên đến phép nhân cuối cùng. Thí dụ: Hình 1.2. Các đổi một số thập phân hệ mười sang hệ hai b. Chuyển từ hệ nhị phân sang hệ thập phân: Để chuyển từ hệ nhị phân sang thập phân ta tính tổng các tích số giữa các hệ số với các trọng số 2 i tại từng vị trí thứ i. Thí dụ: (1110,11) 2 = 1.2 3 + 1.2 2 + 1.2 1 + 0.2 0 + 1.2 -1 + 1.2 -2 = 8 + 4 + 2 + 0,5 + 0,25 = (14,75) 10 1.1.2.2. Chuyển đổi giữa thập lục hoặc hệ bát phân sang hệ nhị phân 4 4 Quy tắc: Nhóm 4 bit (hoặc 3 bit cho hệ bát phân) bắt đầu từ bit ngoài cùng bên phải, tính giá trị số học theo quy luật giá trị riêng cho từng nhóm. Viết các giá trị này liên tiếp nhau. Thí dụ: Cho số nhị phân: 11110101chuyển sang hệ thập lục và hệ bát phân như sau: (11 110 101)  3 6 5  trong hệ bát phân là số 365 (1111 0101)  15 5  F5  trong hệ thập lục là số F5 Khi cần chuyển ngược lại làm tương tự. Thí dụ: (120) 8 = (001 010 000) 2 (120) 16 = (0001 0010 0000) 2 1.3. Các phép toán bit 1.3.1. Phép toán AND Kí hiệu: & Ý nghĩa: Nhân logic trên các bit. Phép toán này thực hiện trên từng cặp bit tương ứng của các toán hạng theo quy tắc trong bảng sau: A B A & B 0 0 0 0 1 0 1 0 0 1 1 1 Bảng 1.3. Bảng chân lý phép toán AND trên bit 1.1.3.Các phép toán logic 1.1.3.1. Phép toán OR Kí hiệu: | Ý nghĩa: Cộng logic trên các bit. Phép toán này thực hiện trên từng cặp bit tương ứng của các toán hạng theo quy tắc trong bảng sau: A B A | B 0 0 0 0 1 1 1 0 1 1 1 1 Bảng 1.4. Bảng chân lý phép toán OR trên bit 1.1.3.2. Phép toán XOR Kí hiệu: ^ Ý nghĩa: Phép cộng logic trên các bit. Thực hiện trên từng cặp bit tương ứng của các toán hạng theo quy tắc trong bảng sau. A B A ^ B 0 0 0 5 5 0 1 1 1 0 1 1 1 0 Bảng 1.5. Bảng chân lý phép toán XOR trên bit 1.1.3.3. Phép toán NOT Kí hiêu: ~ Ý nghĩa: phép đảo bit, đổi các giá trị trong mỗi bit của toán hạng x từ 0->1, 1->0. 1.1.3.4. Phép toán dịch trái/phải - x SHR i: Phép dịch phải, cho giá trị có được từ số nguyên x sau khi dịch sang phải i bit; các số 0 sẽ lấp đầy các kết quả bên trái nếu là số nguyên dương; nếu không phải là số nguyên dương thì số 1 sẽ lấp đầy các kết quả bên trái. Thí dụ: 5 >> 2 = 1 ( 0101 >> 2 = 0001) - x SHL i: Phép dịch trái, cho giá trị có được từ số nguyên x sau khi dịch sang trái i bit; các số 0 sẽ lấp đầy các kết quả ở bên phải. 5 << 2 = 20 1.2. Vi xử lý 8086, tập lệnh và các mode địa chỉ 1.2.1. Vi xử lý 8086 Vi xử lý(VXL)làm nhiệm vụ của bộ xử lý trung tâm CPU nên thường đươc gọi là CPU và được đặt ở trung tâm bản mạch chính.VXL được chế tạo trên cơ sở công nghệ chế tạo các mạch vi điện tử tích hợp rất lớn với các phần tử cơ bản là các Transistor. Các máy tính IBM tương thích với VXL của hãng Intel nên ta sẽ đi tìm hiểu về VXL của intel. Họ VXL của Intel 80x86 với x là 1,2,3,4, đến số 5 thì đổi thành Pentium.Ngoài ra còn có các VXL của các hãng khác. 80x86 là VXL 16 bit, tức là nó có bus dữ liệu 16 bit. Do vậy nó có khả năng truy xuất dữ liệu 2 byte một lần. bus địa chỉ có độ rộng 20 bit. Tức là nó có khả năng xác định địa chỉ của 2 20 ô nhớ = 1MB địa chỉ byte nhớ vật lý. Vềmặt cấu trúc, CPU hay VXL có hai phần chức năng độc lập đó là BIU và EU: BIU là đơn vị ghép nối, nó thực hiện tất cả các công việc về BUS cho EU. Nó thiết lập khâu nối với thế giới bên ngoài là các Bus địa chỉ, số liệu và điều khiển. BIU bao gồm các thanh ghi đoạn nhớ, thanh ghi con trỏ lệnh và bộ điều khiển logic Bus. 6 6 EU là đơn vị thi hành lệnh, EU gồm hai khối: khối tính toán số học và logic ALU và khối điều khiển CU. EU có trách nhiệm xử lý dữ liệu, nó duy trì trạng thái của VXL, kiểm soát các thanh ghi đa năng và toán hạng lệnh. EU gồm các thanh ghi đa năng, thanh ghi cờ. Khi VXL hoạt động, dữ liệu được truyền giữa VXL và thiết bị vào ra khi có yêu cầu của EU. Chúng không được truyền trực tiếp tới EU mà phải qua một vùng nhớ RAM có dung lượng nhỏ hơn 6 byte gọi là hàng nhập lệnh trước PQ. Rồi sau đó mới được truyền vào đơn vị lệnh IU. Tiếp đó IU sẽ điều khiển EU để cho lệnh được thực hiện bởi ALU. Một chu kì lệnh của 8086 có thể coi đơn giản gồm hai thời khoảng: lấy lệnh từ bộ nhớ và thực hiện lệnh.Khi EU đang thực hiện lệnh trước thì BIU đã tìm và lấy lệnh tiếp theo từ bộ nhớ, giải mã nó và nạp vào PQ vào, khiến cho thời gian lấy lệnh của 8086 có thể coi là bằng 0. Sau này chúng ta biết đến cơ chế này trong các VXL về sau của Intel đó là cơ chế đường ống. 1.2.2. Các thanh ghi và mode địa chỉ trong 8086 Thanh ghi là một bộ nhớ dạng RAM được tích hợp ngay trong VXL. Vì tốc độ truy cập các thanh ghi nhanh hơn RAM, nên thanh ghi được dùng để lưu trữ các dữ liệu tạm thời cho quá trình xử lý và tính toán bên trong máy tính. 1.2.2.1. Cách định địa chỉ byte nhớ trong 8086 Bus địa chỉ của 8086 có 20 bit, định địa chỉ cho 1 MB bộ nhớ, trong khi đó các thanh ghi trong 8086 đều có độ rộng là 16 bit, nên phải có cơ chế để đánh địa chỉ logic và vật lý cho không gian nhớ 1MB. Cách đánh địa chỉ như sau: Chương trình sẽ chia không gian nhớ vật lý thành các đoạn nhớ logic, với kích thước 64Kbyte mỗi đoạn, các byte trong đoạn là liên tiếp nhau.Mỗi đoạn nhớ được chương trình gắn cho một địa chỉ đoạn, đó là địa chỉ byte nhớ thấp nhất trong đoạn nhớ. Hai đoạn nhớ liền kề nhau nhất thiết phải cách nhau 16 byte, do đó các đoạn có địa chỉ là bội số 16 của nhau. Như vậy chương trình có thể chứa các đoạn tách rời, phủ lấp hoặc chồng lên nhau. Bên trong đoạn có địa chỉ offset để chỉ khoảng cách từ địa chỉ thấp nhất trong đoạn tới ô nhớ đó.Giá trị offset cho phép xác định chính xác địa chỉ logic của byte nhớ trong đoạn đó. Như vậy, một byte nhớ được định địa chỉ logic bởi một cặp 2 thanh ghi 16 bit là chứa địa chỉ đoạn và địa chỉ độ lệch (segment:offset). Người lập trình chỉ quan tâm tới địa chỉ logic nhưng khi truy xuất bộ nhớ, đơn vị ghép nối Bus BIU 7 7 trong VXL sẽ tính từ đó ra địa chỉ vật lý thật sự của byte nhớ cần truy cập theo công thức: Địa chỉ vật lý=địa chỉ đoạn ×16 + địa chỉ độ lệch (segment×16 + offset) Điều này được BIU thực hiện dễ dàng bằng cách dịch trái giá trị thanh ghi chứa địa chỉ đoạn đi 4 bit rồi cộng với giá trị offset trong thanh ghi chứa độ lệch (vì khi một số nhị phân được dịch trái đi 4 digit, tương đương với việc nhân nó với 2 4 = 16). Vì mỗi thanh ghi đoạn dài 16 bit nên có thể định đến 64 k đoạn nhớ, và số địa chỉ offset (tương ứng với kích thước mỗi đoạn) sẽ là 64 kbyte. Do đó không gian địa chỉ logic sẽ lớn hơn và bằng 64 kbyte × 64 kbyte địa chỉ = 4 Gbyte nhớ. 1.2.2.2. Các thanh ghi trong 8086 8086 có 14 thanh ghi 16 bit. Các thanh ghi đa năng AX, BX, CX, DX.Chúng được dùng để lưu trữ dữ liệu tạm thời trong khi thực hiện chương trình. Ưu điểm của việc sử dụng thanh ghi bên trong cho việc lưu trữ tạm thời dữ liệu là cho phép VXL có thể truy cập dữ liệu nhanh hơn rất nhiều so với việc phải truy cập bộ nhớ ngoài. Các thanh ghi này được tách thành hai phần, mỗi phần 8 bit, phần chứa 8 bit cao là AH, BH, CH, DH và phần chứa 8 bit thấp là AL, BL, CL , DL. Mỗi phần đều có thể được địa chỉ hóa tách biệt. • Thanh ghi AX: Thanh ghi tích lũy (Accumulator Register) – là thanh ghi đóng vai trò trung tâm đối với phép nhân và phép chia. Thanh ghi AH thường được sử dụng để truy nhập qua một kênh vào/ra. • Thanh ghi BX: Thanh ghi cơ sở (Base Register) – được dùng cho các loại định địa chỉ đặc biệt để tính toán địa chỉ, thường được dùng để chứa con trỏ trỏ tới bộ nhớ. • Thanh ghi CX: Thanh ghi đếm (Count Register) – chứa số đếm trong các lệnh lặp vòng. • Thanh ghi DX: Thanh ghi dữ liệu (Data Register)–là thanh ghi mở rộng của thanh ghi AX trong các lệnh nhân và chia. Thanh ghi này chứa nửa cao của một tích 32 bit hoặc nửa cao của một số bị chia 32 bit. Trong việc thực hiện các lệnh đọc/viết các cổng vào/ra, thanh ghi này được dùng để chứa địa chỉ của các cổng cần đọc/viết có giá trị lớn hơn FFh. Các thanh ghi đoạn CS, DS, SS, ES:có 4 thanh ghi đoạn dùng để lưu trữ địa chỉ 16 bit của 4 loại đoạn nhớ logic: đoạn mã lệnh CS, đoạn dữ liệu DS, đoạn 8 8 ngăn xếp SS, đoạn phụ ES. Ngăn xếp (stack) là một vùng nhớ được đặt ra ngoài để lưu trữ địa chỉ và dữ liệu trong khi thực hiện chương trình con. • Thanh ghi đoạn mã lệnh CS: là thanh ghi chứa địa chỉ đoạn của vùng chứa mã lệnh của chương trình đang thực hiện. • Thanh ghi đoạn dữ liệu DS: là thanh ghi địa chứa địa chỉ đoạn của vùng dữ liệu mà chương trình đang thực hiện sử dụng, vùng này thường chứa các biến của chương trình. • Thanh ghi đoạn ngăn xếp SS: là thanh ghi chứa địa chỉ đoạn bộ nhớ ngăn xếp (stack) của chương trình. • Thanh ghi đoạn phụ (mở rộng, bổ xung): là thanh ghi chứa địa chỉ đoạn của vùng nhớ bổ xung mà chương trình đang sử dụng, vùng này cũng thường chứa các biến của chương trình. Các thanh ghi con trỏ và chỉ số:gồm có các thanh ghi: BP, SP, SI, DI, IP. • SP (Stack Pointer) – thanh ghi con trỏ stack: nó luôn kết hợp với SS để chỉ ra đỉnh tức thời của ngăn xếp. Sau mỗi thao tác cất một từ (word) vào ngăn xếp SP sẽ tự động giảm đi 2 đơn vị, và ngược lại sau mỗi thao tác lấy một từ ra khỏi ngăn xếp SP sẽ tự động tăng lên 2 đơn vị. • BP (Base Stack Pointer) – thanh ghi con trỏ cơ sở: là thanh ghi con trỏ để đánh dấu ngăn xếp, Trong nhiều thao tác với stack cần sử dụng thêm thanh ghi này, chẳng hạn như truyền thông số thông qua stack. • SI (Source Index) và DI (Destination Index) – thanh ghi con trỏ chỉ số nguồn và thanh ghi con trỏ chỉ số đích: được thiết kế để chuyên sử dụng trong các thao tác vận chuyển dữ liệu. Trong một số lệnh của 8086 các thanh ghi này luôn được kết hợp với các thanh ghi đoạn DS, ES để trỏ tới nguồn và đích của thao tác vận chuyển dữ liệu. Đó là cắp DS: SI và ES:DI. Thanh ghi con trỏ lệnh IP (Intruction Pointer): Thanh ghi con trỏ lệnh luôn chứa địa chỉ lệch của lệnh tiếp theo sẽ được thi hành trong đoạn nhớ CS. Sau khi một lệnh được thi hành thì IP lại được bộ VXL thay đổi giá trị để trỏ tới lệnh tiếp theo sẽ được thi hành. Thanh ghi cờ Flag (Flags Register): đây là thanh ghi 16 bit, trong đó mỗi bit được sử dụng để thể hiện một trạng thái của bộ VXL tại một thời điểm nhất định trong quá trình thực hiện chương trình, trong VXL 8086 mới chỉ có 9 bit được sử dụng, người ta gọi mỗi bit đó là một cờ, mỗi cờ thường được biểu diễn bằng một kí hiệu gợi nhớ, mỗi cờ đều có hai trạng thái khác nhau là 0 và 1. 9 9 Người lập trình ASM hay dùng trạng thái các bit cờ làm điều kiện cho các lệnh nhảy có điều kiện. x x x x O D I T S Z x A x P x C x: không được định nghĩa. • C hoặc CT (Carry flag): cờ nhớ. CF = 1 khi số nhớ tràn khỏi bit có trọng số lớn nhất. • P hoặc PF (Parity flag): cờ parity. PF phản ánh tính chẵn lẻ (parity) của tổng số bit có trong kết quả. PF = 1 khi tổng số bit 1 trong kết quả là chẵn. • A hoặc AF (Auxiliary carry flag): cờ nhớ phụ, rất có ý nghĩa khi ta làm việc với các số BCD. AF = 1 khi có nhớ hoặc mượn từ một số BCD thấp (4 bit thấp) sang một số BCD cao (4 bit cao). • Z hoặc ZF ( Zero flag): cờ rỗng, ZF = 1 khi kết quả bằng 0. • S hoặc SF (Sign flag): cờ dấu, SF = 1 khi kết quả âm. • hoặc OF (Overflow flag): cờ tràn, OF = 1 khi có hiện tượng tràn số học, đó là trường hợp số quá lớn vượt ra khỏi dung lượng nơi gửi đến. • T hoặc TF (Trap flag): cờ bẫy, TF = 1 thì CPU làm việc ở chế độ chạy từng lệnh( chế độ này cần dùng khi cần tìm lỗi trong một chương trình). • I hoặc IF (Interrupt enable flag): cờ cho phép ngắt, IF = 1 thì CPU cho phép các yêu cầu ngắt được tác động. • D hoặc DF (Direction flag): cờ hướng, DF = 1 khi CPU làm việc với chuỗi kí tự theo thứ tự từ trái sang phải (hay còn gọi D là cờ lùi). 1.2.3. Các mode địa chỉ của 8086 Hay còn gọi là các chế độ địa chỉ, các phương pháp xác định địa chỉ của các toán hạng có trong lệnh. Lưu ý rằng tập các thanh ghi của bộ xử lý được sắp xếp cũng tạo nên một bộ nhớ tốc độ cao và cũng có một không gian địa chỉ. Địa chỉ hiệu dụng EA ~ offset hay độ lệch của ô nhớ chứa toán hạng mong muốn tính từ địa chỉ cơ sở đoạn. Địa chỉ vật lý của ô nhớ chứa toán hạng được 8086 xác định bằng cách cộng địa chỉ hiệu dụng với địa chỉ cơ sở đoạn nằm trong các thanh ghi đoạn. Thanh ghi đoạn thông dụng nhất là thanh ghi DS. 8086 có các mode địa chỉ sau: • Định địa chỉ tức thời:các đơn giản nhất để xác định một toán hạng là phần địa chỉ của lệnh chứa chính toán hạng đó chứ không cần địa chỉ 10 10 [...]... việc viết một chương trình hợp ngữ dạng segment chuẩn quá phức tạp, nên chúng ta thường dùng dạng giản lược của nó hay chương trình hợp ngữ dạng segment đơn giản 1.4.3.1 Dạng thường thấy 1 chương trình ASM đơn giản (Khai báo theo directive điều khiển segment dạng đơn giản) 19 19 .MODEL STACK DATA Khai báo biến CODE Nhãn chương trình: Thân chương trình END Nhãn chương trình Một chương trình asm được biên... của chương trình dạng com và chương trình dạng exe là: • Chương trình dạng com có tất cả các phần mã lệnh, dữ liệu và ngăn xếp đều cùng nằm trong một segment • Chương trình dạng exe có phần mã lệnh, dữ liệu và ngăn xếp nằm trên các segment khác nhau a) Cấu trúc chương trình dạng Com Cấu trúc: MODEL SMALL CODE org 0100h Nhãn chương trình: [JMP nhãn khác khai báo biến nhãn khác:] Thân chương trình int... 1.4.2.2 Các bước thực hiện một chương trình Assember trên máy PC : (soạn thảo chương trình, dịch chương trình, liên kết, chạy thử và cách tìm sai bằng DEBUG của DOS và TD (Turbo Debug) của Borland) Bao gồm 4 bước: + Bước 1: Dùng chương trình soạn thảo bất kì (Edit, NC, TC, ….) để soạn thảo chương trình Sau khi soạn thảo xong phải cất tệp có đuôi là ASM + Bước 2: Dịch chương trình gốc có đuôi ASM thành tệp... Cấu trúc một chương trình hợp ngữ dạng segment đơn giản Cấu trúc của một chương trình hợp ngữ có liên quan chặt chẽ với cấu trúc phần cứng của bộ vi xử lý Người ta đã tạo dựng bốn đoạn (segment) được dự tính cho bộ vi xử lý trong quá trình lập trình: đoạn mã lệnh, đoạn dữ liệu, đoạn ngăn xếp và đoạn mở rộng Trong đó, ít nhấtmột chương trình hợp ngữ phải có một đoạn mã lệnh Do chương trình hợp ngữ có cấu... [các chương trình con] END Nhãn chương trình Ví dụ: Viết chương trình hiện một xâu lên màn hình: model small code org 100h begin: jmp var str db "hello world!$" var: 20 20 lea dx,str mov ah,9 int 21h mov ah,1 int 21h mov ah,4ch int 21h end begin a) Cấu trúc chương trình dạng exe Cấu trúc: MODEL SMALL STACK 100h DATA Khai báo biến CODE Nhãn chương trình: mov ax,@data mov ds,ax Thân chương trình mov ah,4ch... Chương 2 Lập trình với Debug 2.1 Tổng quan về Debug 2.1.1 Đặc điểm của Debug Debug là một chương trình chạy trong môi trường DOS Nó dùng để cho người lập trình có thể: • nhập và dịch các lệnh dạng hợp ngữ sang mã máy và ngược lại • nạp, xem và thay đổi nội dung của tệp ở trong khối nhớ • chạy chương trình theo từng lệnh, nhóm lệnh hay cả chương trình • sửa từng byte, nhiều byte hay cả chương trình • xem... nhiên việc viết chương trình bằng ngôn ngữ máy cũng có những ưu điểm của nó như phát huy tối đa được khả năng của tập lệnh của bộ vi xử lý, cũng như sử dụng có hiệu quả nhất bộ nhớ của máy tính, tốc độ thực hiện chương trình là nhanh nhất và chương trình có kích thước nhỏ nhất Để tránh các khó khăn của việc viết chương trình bằng ngô ngữ máy nhưng vẫn đạt được ưu điểm của việc lập trình bằng ngôn ngữ... niệm vềchương trình hợp ngữ dạng segment Một chương trình segment dạng chuẩn phải định nghĩa đầy đủ bốn đoạn, mỗi đoạn được bắt đầu bằng chỉ dẫn hướng (directive) segment và kết thúc bằng chỉ dẫn hướng ENDS, mỗi đoạn đều được người lập trình cho trước một tên độc lập với kiểu của nó Ở cuối mỗi chương trình hợp ngữ có chỉ dẫn hướng END để hướng dẫn cho bộ dịch hợp ngữ biết rằng chương trình đã kết thúc... Nếu chương trình có khai báo biến (tức là có DATA) thì người lập trình ASM phải đưa phần địa chỉ segment của vùng nhớ dữ liệu vào trong DS nhờ 2 lệnh sau: mov reg16, @data mov ds,reg16 23 23 Ví dụ: mov ax, @data mov ds,ax d) Directive CODE Chức năng: Báo cho chương trình dịch ASM biết để xác lập 1 vùng nhớ RAM cho phần tử mã máy của chương trình Cú pháp: CODE 1.4.4 Cấu trúc của một chương trình segment... 0000 đến 0000: 03FF Như vậy, địa chỉ của chương trình xử lí ngắt số 0 nằm ở 4 ô nhớ từ 0000: 0000 đến 0000: 0003, địa chỉ của chương trình ngắt số 1 từ 0000: 0004 đến 0000: 0007 v.v… Dó đó để xác định ô nhớ chứa địa chỉ bắt đầu của chương trình con phục vụ ngắt ta chỉ việc nhân số ngắt với 4 1.4 Giới thiệu về hợp ngữ 1.4.1 Lập trình bằng hợp ngữ Việc lập trình bằng ngôn ngữ máy đòi hỏi ta phải nhớ các . chương trình: Thân chương trình END Nhãn chương trình Một chương trình asm được biên dịch thành công sẽ trở thành một file chạy có phần mở rộng là .com hoặc .exe. Sự khác nhau của chương trình. chương trình dạng .Com Cấu trúc: .MODEL SMALL .CODE org 0100h Nhãn chương trình: [JMP nhãn khác khai báo biến nhãn khác:] Thân chương trình int 20h [các chương trình con] END Nhãn chương trình. hiện chương trình là nhanh nhất và chương trình có kích thước nhỏ nhất. Để tránh các khó khăn của việc viết chương trình bằng ngô ngữ máy nhưng vẫn đạt được ưu điểm của việc lập trình bằng ngôn

Ngày đăng: 12/07/2014, 05:20

Từ khóa liên quan

Mục lục

  • Chương 1: MỞ ĐẦU

    • 1.1. Nhắc lại các hệ đếm

      • 1.1.1. Các hệ đếm

      • 1.1.2. Chuyển đổi số giữa các hệ đếm

      • 1.2. Vi xử lý 8086, tập lệnh và các mode địa chỉ

        • 1.2.1. Vi xử lý 8086

        • 1.2.2. Các thanh ghi và mode địa chỉ trong 8086

          • 1.2.2.1. Cách định địa chỉ byte nhớ trong 8086

          • 1.2.2.2. Các thanh ghi trong 8086

          • 1.2.3. Các mode địa chỉ của 8086

          • 1.3. Ngắt

          • 1.4. Giới thiệu về hợp ngữ

            • 1.4.1. Lập trình bằng hợp ngữ

            • 1.4.2. Các bước viết chương trình hợp ngữ

              • 1.4.2.1. Cài đặt chương trình dịch TASM:

              • 1.4.2.2. Các bước thực hiện một chương trình Assember trên máy PC :

              • a) Cấu trúc chương trình dạng .Com

              • a) Cấu trúc chương trình dạng .exe

              • 1.4.3.2. Các Directve (.MODEL, .STACK, .DATA, .CODE, ...)

              • 1.4.4. Cấu trúc của một chương trình segment dạng chuẩn

                • 1.4.4.2. Các directive điều khiển segment: dạng chuẩn

                • Chương 2. Lập trình với Debug

                  • 2.1. Tổng quan về Debug

                  • 2.2. Các lệnh của Debug

                    • 2) Lệnh E

                    • 3) Lệnh F

                    • 4) Lệnh U

                    • 1) Lệnh I

                    • 2) Lệnh O

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

Tài liệu liên quan