DLTHANH - GROUP SHARE
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.



 
Trang ChínhTrang Chính  Tìm kiếmTìm kiếm  Latest imagesLatest images  Đăng kýĐăng ký  Đăng Nhập  
Chào mừng các bạn đến với diễn đàn*** http://dlthanh.tk *** Hy vọng rằng diễn đàn sẽ mang lại những giây phút vui vẻ và bổ ích cho các bạn ***Regards***
Tuyển ban quản trị cho diễn đàn
Tinh thuong
TOP BÀI VIẾT MỚI

Share|
[ Tiêu đề ]

Bộ giáo trình hợp ngữ Assembly

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down
Tác giảThông điệp

vit7


Level: Kinh nghiệm: 13%
Sinh mệnh: 13/100
Pháp lực: /100

Tổng số bài gửi : 13
Points : 59
Reputation : 13
Join date : 08/09/2010

Bài gửiTiêu đề: Bộ giáo trình hợp ngữ Assembly Bộ giáo trình hợp ngữ Assembly EmptyFri Sep 10, 2010 5:17 am

Đây là toàn bộ GT hợp ngữ, có vài cuốn khá hiếm :

[You must be registered and logged in to see this link.]

Trình hợp dịch (Assembler)

Thông thường, một trình hợp dịch hiện đại tạo ra [You must be registered and logged in to see this link.] (object code) bằng cách [You must be registered and logged in to see this link.] các lệnh hợp ngữ thành [You must be registered and logged in to see this link.] (opcodes) và phân tích các [You must be registered and logged in to see this link.] (symbolic names) ứng với các vùng nhớ cùng các thực thể khác. Việc dùng các [You must be registered and logged in to see this link.] để tham chiếu là một tính năng then chốt của các [You must be registered and logged in to see this link.], nó tiết kiệm một khối lượng lớn công việc tính toán và sửa đổi thủ công sau mỗi lần cải tiến ứng dụng. Hầu hết các trình hợp dịch đều hỗ trợ [You must be registered and logged in to see this link.] nhằm giúp cho việc thay thế một nhóm lệnh bằng một định danh ngắn gọn. Trong quá trình dịch, nhóm lệnh tương ứng sẽ được chèn trực tiếp vào vị trí macro thay vì một lời gọi [You must be registered and logged in to see this link.] (subroutine). Các trình hợp dịch nói chung dễ tạo hơn so với các chương trình dịch cho [You must be registered and logged in to see this link.]. Những trình hợp ngữ đầu tiên xuất hiện từ những [You must be registered and logged in to see this link.], trong buổi đầu sơ khai của [You must be registered and logged in to see this link.] đã tạo ra một bước ngoặt lớn đối với những [You must be registered and logged in to see this link.] vốn rất mệt mỏi vì việc lập trình bằng ngôn ngữ máy. Các trình hợp dịch hiện đại ngày nay, đặc biệt cho các dòng chip [You must be registered and logged in to see this link.] như [You must be registered and logged in to see this link.], [You must be registered and logged in to see this link.][You must be registered and logged in to see this link.], thường tối ưu việc sắp xếp và đồng bộ các chỉ thị lệnh (instruction scheduling) để tận dụng các [You must be registered and logged in to see this link.] (pipeline) của [You must be registered and logged in to see this link.] một cách hiệu quả.


Nhiều trình hợp dịch cấp cao còn hỗ trợ khả năng ngôn ngữ trừu tượng như:

  • Các cấu trúc điều khiển nâng cao
  • Các khai báo hàm cấp cao
  • Các kiểu dữ liệu trừu tượng cấp cao bao gồm các structures/records, unions, classes, và sets
  • Các macro phức tạp
Tham khảo phần thiết kế ngôn ngữ bên dưới để rõ hơn.

Hợp ngữ (Assembly language)


Một chương trình viết bằng hợp ngữ bao gồm một chuỗi các lệnh (instructions) dễ nhớ tương ứng với một luồng các chỉ thị khả thi (executable) mà khi được dịch bằng một triình hợp dịch , chúng có khả năng nạp được vào bộ nhớ đồng thời thực thi được. Ví dụ, bộ vi xử lý x86 / IA-32có thể thực hiện được chỉ thị nhị phân sau (thể hiện ở dạng ngôn ngữ máy):

  • 10110000 01100001 (thập lục phân: 0xb061)
Lện trên tương đương với một chỉ thị hợp ngữ dễ nhớ hơn sau:

  • mov al, 061h
Chỉ thị lệnh trên có nghĩa là: gán giá trị thập lục phân 61 (97 dạng thập phân) cho thanh ghi trong bộ vi xử lý có tên là "al". Thuật từ “mov” là mã thực thi (operation code / opcode), được người thiết kế tập lệnh đặt tên thay thế cho từ “move”, các đối/ tham số của lệnh theo sau và ngăn cách với opcode bởi một dấu phảy “,”.

Trình hợp dịch thực hiện chuyển đổi hợp ngữ sang ngôn ngũ máy trình phân dịch (disassembler) thực hiện quá trình trên ngược lại. Không giống các ngôn ngữ bậc cao, các chỉ thị hợp ngữ cơ bản thường có mối liên hệ tương ứng 1-1 với các chỉ thị ngôn ngữ máy. Tuy nhiên trong một số trường hợp, một trình hợp dịch có thể bổ sung các lệnh giả (pseudo-instructions) vào tập lệnh ngôn ngữ máy nhằm cung cấp các chức năng được dùng thường xuyên. Hầu hết các trình hợp dịch đa chức năng đều cung cấp thêm một tập macro phong phú để nhà sản xuất thiết bị và lập trình viên có thể tạo các mã lệnh và các dãy dữ liệu phức tạp.

Mỗi kiến trúc máy tính đều có ngôn ngữ máy riêng và do đó cũng có hợp ngữ riêng, chúng phân biệt với nhau bằng số lượng và kiểu của các lệnh mà chúng hỗ trợ. Chúng cũng có thể khác nhau về số lượng và kích cỡ của các thanh ghi cũng như cách thể hiện các kiểu dữ liệu trong bộ lưu trữ (bộ nhớ). Hầu hết các máy tính công dụng chung đều có khả năng thực hiện cùng chức năng nhưng cách mà chúng thực hiện thì khác nhau, điều đó phản ánh sự khác nhau giữa các hợp ngữ tương ứng với mỗi kiểu máy tính.

Ngôn ngữ máy (Machine language)


Ngôn ngữ máy được xây dựng từ các chỉ thị và các lệnh rời rạc, tùy vào mỗi kiến trúc xử lý mà tập lệnh được xác lập bởi các đặc thù riêng:

  • Các thanh ghi dùng cho tính toán số học
  • Cách bố trí bộ nhớ vàdiều khiển rẽ nhánh điều khiển rẽ nhánh
  • Các kiểu đánh địa chỉ đặc thù dùng để giải các toán hạng
Nhiều lệnh phức hợp được tạo dựng bằng cách kết hợp nhiều chỉ thị đơn giản với nhau, các chỉ thị này tuân theo nguyên lý máy tính Von Nuemann tức là thực thi tuần tự và rẽ nhánh theo lệnh phân luồng. Một số lệnh điển hình có mặt trong hầu hết các tập lệnh gồm có:

  • Lệnh gán

    • Gán cho một thanh ghi (một vùng nhớ tạm thời trong CPU ) một giá trị hằng số xác định
    • Chuyển dữ liệu từ một vùng nhớ sang một thanh ghi hoặc ngược lại. Thao tác này dùng để chuẩn bị dữ liệu cho một tính toán sau đó hoặc để lưu kết quả của một tính toán trước đó.
    • Đọc /ghi dữ liệu từ/vào các thiết bị phần cứng
    </li>
  • Lệng cho tính toán

    • Cộng, trừ, nhân hoặc chia các giá trị chứa trong các thanh ghi và lưu kết quả vào một thanh ghi
    • Thực hiện các phép thao tác bit “và”/”hoặc” (AND/OR) trên một cặp thanh ghi, hoặc phép phủ định bit trên một thanh ghi
    • So sánh nhỏ hơn/lớn hơn/ bằng nhau giữa hai giá trị lưu trong hai thanh ghi
    </li>
  • Lệnh điều khiển rẽ nhánh

    • Nhảy tới một vị trí trong chương trình và thực thi các lệnh ở đó
    • Nhảy tới một vị trí khác nếu một điều kiện nhất định được thỏa mãn
    • Nhảy tới một vị trí nhưng lưu lại vị trí của lệnh tiếp theo để làm điểm nhảy trở về (thường là một lời gọi hàm)
    </li>
Một số máy tính bao gồm các chỉ thị lệnh phức hợp trong tập lệnh của chúng. Một lệnh phức hợp thường thực hiện những tác vụ cần nhiều chỉ thị lệnh trên nhiều máy khác nhau, chúng thực hiện trong nhiều bước, điều khiển nhiều đơn vị chức năng.


Danh sách minh họa một số lệnh phức hợp:

  • Lưu lại nhiều thanh ghi trên ngăn xếp chỉ một lần
  • Di chuyển các khối vùng nhớ lớn
  • Các phép toán dấu phảy động phức tạp (sine, cosine, square root, etc.)
  • Các lệnh ALU liên kết với một toán hạng từ bộ nhớ thay vì với một thanh ghi
Còn nữa các bạn tham khảo thêm nha ...........


Hãy cảmơn bài viết của vit7 bằng cách bấm vào "" nhé!!!

Về Đầu Trang Go down

Aquabom
Aquabom

Level: Kinh nghiệm: 49%
Sinh mệnh: 49/100
Pháp lực: /100

Tổng số bài gửi : 49
Points : 142
Reputation : 22
Join date : 05/09/2010

Bài gửiTiêu đề: Re: Bộ giáo trình hợp ngữ Asembly Bộ giáo trình hợp ngữ Assembly EmptyFri Sep 10, 2010 6:42 am

Bài này hay đấy post tiếp nha!!! Thank vit7


Hãy cảmơn bài viết của Aquabom bằng cách bấm vào "" nhé!!!

Về Đầu Trang Go down

[Tiêu đề]

Bộ giáo trình hợp ngữ Assembly

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang
Trang 1 trong tổng số 1 trang
.::Host up ảnh miểnphí: Clickhere! - Hướng dẩn sử dụng Diễn đàn:Clickhere!::.
Permissions in this forum:Bạn không có quyền trả lời bài viết
DLTHANH - GROUP SHARE :: Công Nghệ Thông Tin :: Lập Trình-
Copyright © 2007 - 2010, http://dlthanh.tk
Powered by phpBB2 - GNU General Public License. Host in France. Support by Forumotion
.Free forum | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất