decuongktmt

Màu nền
Font chữ
Font size
Chiều cao dòng

1) Phân loại các loại máy tính

Thông thường máy tính được phân loại theo tính năng kỹ thuật và giá tiền.

1. Các siêu máy tính (Super Computer): là các máy tính đắt tiền nhất và tính năng kỹ thuật cao nhất. Giá bán một siêu máy tính từ vài triệu USD. Các siêu máy tính thường là các máy tính vectơ hay các máy tính dùng kỹ thuật vô hướng và được thiết kế để tính toán khoa học, mô phỏng các hiện tượng. Các siêu máy tính được thiết kế với kỹ thuật xử lý song song với rất nhiều bộ xử lý (hàng ngàn đến hàng trăm ngàn bộ xử lý trong một siêu máy tính).

2. Các máy tính lớn (Mainframe) là loại máy tính đa dụng. Nó có thể dùng cho các ứng dụng quản lý cũng như các tính toán khoa học. Dùng kỹ thuật xử lý song song và có hệ thống vào ra mạnh. Giá một máy tính lớn có thể từ vài trăm ngàn USD đến hàng triệu USD.

3. Máy tính mini (Minicomputer) là loại máy cở trung, giá một máy tính mini có thể từ vài chục USD đến vài trăm ngàn USD.

4. Máy vi tính (Microcomputer) là loại máy tính dùng bộ vi xử lý, giá một máy vi tính có thể từ vài trăm USD đến vài ngàn USD.

*//

2) Kiến trúc máy tính Von Newmanm

Kiến trúc Von Neumann

Tất cả các máy tính đều có chung một cơ sở kiến trúc giống nhau bất kể nó là một máy tính mainframe hàng triệu đô la hay là một máy tính bỏ túi Palm Pilot. Chúng đều có bộ nhớ, hệ thống vào/ra, đơn vị tính toán/logic, và đơn vị điều khiển. Kiến trúc như thế này được gọi là kiến trúc Von Neumann, theo tên của nhà toán học đã thiết kế ra nó.

*{ Kiến trúc Von Neumann chia máy tính ra làm bốn bộ phận chính: đơn vị số học và lôgic (ALU), mạch điều khiển (control circuitry), bộ nhớ và các thiết bị ra/vào (I/O). Các bộ phận này được kết nối với nhau bằng các bó dây điện (được gọi là các bus khi mỗi bó hỗ trợ nhiều hơn một đường dữ liệu) và thường được điều khiển bởi bộ đếm thời gian hay đồng hồ (mặc dù các sự kiện khác cũng có thể điều vận mạch điều khiển). }

Bộ nhớ:

Bộ nhớ máy tính là hệ thống con dùng lưu trữ tạm thời các chỉ thị của chương trình và dữ liệu sẽ được thực hiện bởi máy tính. Nó thuờng được gọi là RAM. Bộ nhớ được chia thành các ô, mỗi ô có địa chỉ riêng để dữ liệu có thể nạp.

Hệ thống vào/ra (I/O)

Đây là hệ thống con cho phép máy tính tương tác với các thiết bị khác và liên lạc với thế giới bên ngoài. Nó cũng chịu trách nhiệm lưu trữ chương trình bằng cách điều khiển đĩa cứng.

Đơn vị tính toán/logic (ALU)

Đây là hệ thống con thực hiện tất cả các phép toán số và phép so sánh. Trong thiết kế Von Neumann, đơn vị này và đơn vị điều khiển là 2 thành phần khác nhau, tuy nhiên trong các hệ máy tính hiện đại ngày nay chúng được tích hợp thành một trong processor. ALU có 3 phần bao gồm: thanh ghi, mạch ALU, và kết nối giữa chúng. Thanh ghi cơ bản là một ô lưu trữ giống như RAM dùng để giữ kết quả của các tính toán. Tuy nhiên nó nhanh hơn RAM nhiều. Mạch ALU là nơi thực hiện các tính toán. Nó được thiết kế từ các cổng AND, OR, và NOT như bất cứ vi chip nào.

Đơn vị điều khiển

Đơn vị điều khiển chịu trách nhiệm:

(1) tìm trong bộ nhớ chỉ thị chương trình kế tiếp sẽ chạy,

(2) giải mã chỉ thị đó thành cái máy tính có thể hiểu,

(3) đưa mệnh lệnh thích hợp tới ALU, bộ nhớ, và hệ thống vào/ra.

Các bước này được làm liên tục cho đến dòng cuối cùng của chương trình.

Ở cấp độ máy tính, các chỉ thị của chương trình được diễn đạt dưới dạng ngôn ngữ máy. Đây là các mã nhị phân được tổ chức thành mã phép toán (op code) và các trường địa chỉ (address fields). Các mã phép toán là các mã nhị phân cho máy tính biết phép toán nào sẽ được thực hiện. Trường địa chỉ là vị trí trong bộ nhớ mà trên đó mã phép toán sẽ tác dụng. Các chỉ thị chương trình trong ngôn ngữ máy được biểu diễn dưới dạng mã phép toán trước rồi kế tiếp là mã các địa chỉ nhớ. Chúng ta hãy xem một ví dụ: giả sử chúng ta muốn cộng 2 số có địa chỉ trong bộ nhớ là 99 và 100. Lại giả sử rằng mã phép toán cộng là 9 trong hệ thập phân. Như thế định dạng mệnh lệnh trên sẽ là 9-99-100. Tất nhiên máy tính không thể thấy dạng thập phân trên, mà thay vì thế chúng cần được chuyển sang dạng nhị nhân:

0000100100000000011000110000000001100100

tất cả các con số được đặt sát nhau không có dấu cách. Đến đây có lẽ bạn đã có khái niệm về việc máy tính suy nghĩ như thế nào.

3) Khái niệm phần cứng, mềm, firmware

Firmware

Có người gọi là phần sụn hay sự mềm dẻo hóa phần cứng. Thực chất Firmware là phần mềm nhớ trong bộ nhớ chỉ đọc (ROM-Read Only Memory) chứa các thủ tục khởi động, lệnh vào/ra ở mức thấp. Nó mềm dẻo hóa phần cứng do linh hoạt, dễ sửa đổi và thông quá đó làm tăng tốc phần cứng. Điển hình là những Firmware của hãng Lite on giúp tăng tốc độ của ổ đĩa CD-RW, nó có thể nâng tốc độ từ 48x16x48x lên thành 52x24x52x.

Ổ đĩa cứng cũng vậy, firmware có vai trò nhất định. Chẳng hạn nếu chúng ta dùng ổ đĩa cứng của hãng Seagate, Model ST340015A thì Firmware Revision là 3.01 và sự hỗ trợ tiếp theo của Seagate sẽ là 3.02...

Về khía cạnh thương mại, Firmware là một phần mềm miễn phí. Nhưng thực chất bạn đã trả phí khi bỏ tiền mua phần cứng. Firmware có thể do chính hãng sản xuất thiết bị phần cứng viết hoặc thuê hãng thứ ba viết để hỗ trợ khách hàng và xét cho cùng thì đó cũng là một chiêu câu khách.

Freeware

Có nghĩa là "Phần mềm miễn phí", người sử dụng không phải trả tiền khi dùng nó. Tuy nhiên freeeware lại có những giới hạn sau đây:

+ Dung lượng không lớn, chức năng không nhiều và tác giả không có trách nhiệm bảo hành cho người dùng (lỡ bị ảnh hưởng gì đến các chương trình khác trong máy thì ráng chịu! Miễn phí mà).

+ Người sử dụng freeware thấy hay thì có quyền sao chép cho người khác sử dụng như mình. Nhưng, tất nhiên là không được lấy tiền (vì tác giả phần mềm có lấy tiền đâu!).

+ Không được sử dụng cho mục đích thương mại. Thậm chí có tác giả yêu cầu không được sử dụng cho bộ máy công quyền hay mục đích quân sự (không đọc kỹ phần thỏa thuận bản quyền trước khi cài đặt, có ngày bị kiện ra tòa đấy. Đừng tưởng bở với Freeware)

+ Tác giả vẫn giữ bản quyền (copyright)

+ Freeware thì miễn phí nhưng không nhất thiết phải là mã nguồn mở, có những trường hợp tác giả quy định người dùng không được dịch ngược mã nguồn hoặc làm thay đổi sản phẩm đã hoàn chỉnh. Chính vì vậy freeware khác với khái niệm free software. Và đã có ý kiến nên dùng thuật ngữ Gratisware nhưng thuật ngữ này không được phổ biến.

Khái niệm Freeware được Andrew Fluegelman đặt ra, ban đầu như là một thương hiệu (Trademak) cho phần mềm PC-Talk do ông viết hồi năm 1982, sau đó thương hiệu này bị bỏ và freeware trở thành một danh từ chung.

Chúng ta còn có Abandonware (abandon-bỏ rơi) đó là những phần mềm hết "đát", không còn bán trên thị trường nữa. Thực sự chỉ có một số phần mềm dạng này khi người giữ bản quyền chính thức tuyên bố với bàn dân thiên hạ.

Shareware

Là phần mềm miễn phí trong một số điều kiện. Shareware sẽ đưa ra một số yêu cầu mà bạn phải tuân theo nếu muốn sử dụng lâu dài, ổn định. Shareware bao gồm:

+ Donatewate: (donate-tặng) tác giả chỉ cần người dùng trả tiền "tùy lòng hảo tâm" cho tác giả hoặc cho một tổ chức thứ ba nào đó, thường là một tổ chức từ thiện. Nếu tặng cho tổ chức từ thiện thuật ngữ sẽ là Careware hoặc Charityware.

+ Postcardware: Tác giả chỉ cần người dùng gởi thư phản hồi về sản phẩm, hoặc gởi bưu thiếp, bưu ảnh để giúp tác giả có bộ sưu tập về các thành phố, các cảnh đẹp trên toàn thế giới.

+ Adware: Sử dụng miễn phí nhưng phải chịu khó đọc quảng cáo trong giao diện của chương trình hoặc một đoạn quảng cáo khi bắt đầu chạy chương trình. Tuy nhiên, gần đây Adware dễ bị đánh đồng với Spyware.

Cả ba loại Donateware, Postcardware và Adware rõ ràng là không tốn phí khi sử dụng với đầy đủ tính năng của phần mềm. Vì vậy, vẫn có thể coi là Freeware.

Vậy Shareware thực thụ? Là các phần mềm bị hạn chế tính năng sử dụng hoặc giới hạn thời gian hoặc số lần dùng. Loại hạn chế này có tên gọi là Cripleware. Bạn phải trả tiền thì mới có bản đầy đủ tính năng (full version). Thực chất đó là những bản dùng thử với mục đích "câu khách", là một cách quảng bá sản phẩm. Điều tất yếu đi kèm trong thế giới kỹ thuật số là các Shareware nhanh chóng trở thành nạn nhân của *****. Ở Việt Nam ta hai công ty Lạc Việt và Ban Mai là điển hình của nạn ***** đến nỗi không còn hứng thú phát triển những phầm mềm vô cùng hữu dụng.

Rất dí dỏm khi một số Shareware vẫn có thể cho người dùng tiếp tục làm việc với nó dù đã hết thời hạn dùng thử, nhưng liên tục đưa ra lời nhắc nhở người dùng phải đăng ký và trả tiền, được gọi là Nagware (nag-mè nheo, càu nhàu!!!). Nếu không nhầm thì WinZip và WinRar là Nagware thứ thiệt.

Thuật ngữ Shareware được Bob Wallace sử dụng lần đầu tiên năm 1980 với phần mềm PC-Write, một chương trình xử lý văn bản.

Free Software và Open Source

Richard Stallmann, người đi tiên phong trong việc chống lại sự sở hữu phần mềm "làm của riêng" đã đưa khái niệm này ra trong dự án GNU hồi năm 1984. Theo Richard Stallmann một Free software phải đem đến cho người sử dụng các quyền tự do sau đây:

+ Quyền tự do 0: Tự do chạy chương trình vì bất kỳ lý do gì.

+ Quyền tự do 1: Tự do nghiên cứu chương trình làm việc như thế nào, được phép sửa đổi cho phù hợp với nhu cầu của người dùng cụ thể. Mã nguồn mở là điều kiện tiên quyết cho quyền tự do này

+ Quyền tự do 2: Tự do phân phối các bản sao để giúp đỡ những người khác có nhu cầu.

+ Quyền tự do 3: Tự do cải tiến chương trình và đưa sự cải tiến này ra cho cộng đồng cùng hưởng lợi. Đương nhiên, mã nguồn mở là điều kiện tiên quyết. Stallmann và những người ủng hộ đã dùng Free software để đối lập với proprietary software (phần mềm sở hữu riêng). Phần mềm sở hữu riêng cấm đoán người khác chỉnh sửa và phân phối lại, nó là tài sản và là bí mật riêng của cá nhân, công ty, tổ chức.

Tuy nhiên Free software không nhất thiết phải là Freeware, nghĩa là không nhất thiết phải miễn phí. Stallmann nhắc đi nhắc lại "free" trong từ "free software" không phải là không tốn tiền mà là có tự do ("free as in free speech not as in free bear"), đặc biệt là quyền được thay đổi và đóng góp cho cộng đồng qua việc có thể nắm được mã nguồn của chương trình.

Vì vậy, tính chất mã nguồn mở của chúng (open source) là khác biệt rất quan trọng với phần mềm đóng (close source), cho dù phần mềm đóng có miễn phí hay không.

Tất nhiên, phần mềm mã nguồn mở luôn rẻ hơn phần mềm đóng vì việc chỉnh sửa sẽ ít tốn công sức hơn việc tạo mới từ đầu. Một khía cạnh khác của mã nguồn mở là tính an ninh trong sử dụng.

Phần mềm mã nguồn mở mà điển hình là Linux với các bản phân phối thương mại như Red Hat là một ví dụ chứng minh cho tư tưởng free software và tính khả thi của tư tưởng này.

Đáng buồn là ở nước ta, khi nghĩ đến ...WARE thì đại đa số người dùng đồng nghĩa hóa nó với "xài chùa". Phần mềm tự do, cụ thể là những phần mềm mã nguồn mở là lối thoát hầu như duy nhất cho một đất nước đang phát triển. Là đối trọng đáng kể cho những phần mềm thương mại của các đại gia phải biết điều (Microsoft đã phải hạ giá bán, phải công bố một số mã nguồn trước áp lực của free software).

Tuy nhiên, việc xây dựng các phần mềm mã nguồn mở ở Việt Nam đến nay khó có thể gọi là "thành công tốt đẹp". Đã có bao nhiêu khoa tin học, công nghệ thông tin của các trường đại học đưa mã nguồn mở vào nghiên cứu, giảng dạy? Trong khi đó, rõ ràng tư tưởng phần mềm tự do là rất tiến bộ, rất phù hợp với xu hướng phát triển theo định hướng xã hội chủ nghĩa ở nước ta.

.......

Phần cứng, còn gọi là cương liệu (tiếng Anh: hardware), là các cơ phận (vật lý) cụ thể của máy tính hay hệ thống máy tính như là màn hình, chuột, bàn phím, máy in, máy quét, vỏ máy tính, bộ nguồn, bộ vi xử lý CPU, bo mạch chủ, các loại dây nối, loa, ổ đĩa mềm, ổ đĩa cứng, ổ CDROM, ổ DVD, ...

Dựa trên chức năng và cách thức hoạt động người ta còn phân biệt phần cứng ra thành:

• Nhập hay đầu vào (Input): Các bộ phận thu nhập dữ liệu hay mệnh lệnh như là bàn phím, chuột...

• Xuất hay đầu ra (Output): Các bộ phận trả lời, phát tín hiệu, hay thực thi lệnh ra bên ngoài như là màn hình, máy in, loa, ...

Ngoài các bộ phận nêu trên liên quan tới phần cứng của máy tính còn có các khái niệm quan trọng sau đây:

• Bus: chuyển dữ liệu giữa các thiết bị phần cứng.

• BIOS (Basic Input Output System): còn gọi là hệ thống xuất nhập cơ bản nhằm khởi động, kiểm tra, và cài đặt các mệnh lệnh cơ bản cho phần cứng và giao quyền điều khiển cho hệ điều hành

• CPU: bộ phân vi xử lý điều khiển toàn bộ máy tính

• Kho lưu trữ dữ liệu: lưu giữ, cung cấp, thu nhận dữ liệu

• Các loại chíp hỗ trợ: nằm bên trong bo mạch chủ hay nằm trong các thiết bị ngoại vi của máy tính các con chip quan trọng sẽ giữ vai trò điều khiển thiết bị và liên lạc với hệ điều hành qua bộ điều vận hay qua phần sụn

• Bộ nhớ: là thiết bị bên trong bo mạch chủ giữ nhiệm vụ trung gian cung cấp các mệnh lệnh cho CPU và các dữ liệu từ các bộ phận như là BIOS, phần mềm, kho lưu trữ, chuột đồng thời tải về cho các bộ phận vừa kể kết quả các tính toán, các phép toán hay các dữ liệu đã/đang được xử lý

• các cổng vào/ra

4) Khái niệm lệnh máy, ngôn ngữ máy, ngôn ngữ bậc thấp, bậc cao, trình thông dịch, biên dịch.

Ngôn ngữ máy:=Ngôn ngữ, trong đó các câu lệnh là các mã máy (mã nhị

phân) thực hiện các thao tác vật lý trong máy như chuyển nội dung từ ô nhớ

này sang ô nhớ khác... Thực hiện phép toán của 2 ô nhớ và đưa kết quả vào

một ô nhớ nào đó theo lệnh...

• Ngôn ngữ bậc cao:=Ngôn ngữ gần với ngôn ngữ của người, viết bằng tiếng

Anh, dễ hiểu, dễ sửa chữa lại hay xóa bỏ...

• Ngôn ngữ bậc thấp:=Ngôn ngữ gần với ngôn ngữ máy, do con người viết ra

bằng các kí hiệu hết sức ngắn gọn mô tả các thao tác vật lý của ngôn ngư máy

• Thông dịch: Đọc một câu Lệnh (là một nhiệm vụ xác định mà máy sẽ phải

thực hiện được) trong Chương trình nguồn, dịch ra câu lệnh theo ngôn ngữ

máy và MTĐT thực hiện luôn. Ví dụ: Ngôn ngữ HTML làm trang web.

• Biên dịch: Dịch hết toàn bộ chương trình nguồn thành một chương trình đích

hoàn chỉnh rồi MTĐT mới thực hiện. Ví dụ: dịch một bản hướng dẫn tham

quan từ tiếng Việt ra tiếng Nga, rồi in ra văn bản cho đoàn du lịch người Nga

thực hiện

5) Biểu diễn số nguyên, số thực, số nguyên âm, số thập phân trong máy tính

6) Chuyển đổi cơ số hệ 2 -10 - 16

7) Cấu tạo chung bộ VXL

8) Cấu tạo đơn vị điều khiển CU

CPU có 3 khối chính là :

1. Bộ điều khiển ( Control Unit )Là các vi xử lí có nhiệm vụ thông dịch các lệnh của chương trình và điều khiển hoạt động xử lí,được điều tiết chính xác bởi xung nhịp đồng hồ hệ

thống. Mạch xung nhịp đồng hồ hệ thống dùng để đồng bộ các thao tác xử lí trong và ngoài CPU theo các khoảng thời gian không đổi.Khoảng thời gian chờ giữa hai xung gọi là chu kỳ xung nhịp.Tốc độ theo đó xung nhịp hệ thống tạo ra các xung tín hiệu chuẩn thời gian gọi là tốc độ xung nhịp - tốc độ đồng hồ tính bằng triệu đơn vị mỗi giây-Mhz. Thanh ghi là phần tử nhớ tạm trong bộ vi xử lý dùng lưu dữ liệu và địa chỉ nhớ trong máy khi đang thực hiện tác vụ với chúng.

2. Bộ số học-logic (ALU-Arithmetic Logic Unit)Có chức năng thực hiện các lệnh của đơn vị điều khiển và xử lý tín hiệu. Theo tên gọi,đơn vị này dùng để thực hiện các phép tính số học( +,-,*,/ )hay các phép tính logic (so sánh lớn hơn,nhỏ hơn...)

3. Thanh ghi ( Register )Thanh ghi có nhiệm vụ ghi mã lệnh trước khi xử lý và ghi kết quả sau khi xử lý

________________________________________

9) Các chế độ địa chỉ lệnh, các loại lệnh máy, chu trình lệnh máy

10) Ngắt, chương trình con

11) Bộ thanh ghi, các loại thanh ghi

Thanh ghi thường được đo bằng các bit nó có thể chứa, ví dụ, một thanh ghi "8-bit" hay thanh ghi "32-bit". Các thanh ghi hiện nay thường được xem như file thanh ghi - register file, nhưng chúng cũng được dùng riêng rẽ flip-flops, tốc độ cao core memory, thin film memory, và các cách khác trong nhiều máy móc.

Có một số phân lớp các thanh ghi tùy theo nội dung:

• Thanh ghi khả hiện - Có hai loại. Thanh ghi dữ liệu và thanh ghi địa chỉ.

• Thanh ghi dữ liệu được dùng để lưu số nguyên (xem thanh ghi số thực dưới đây). Trong một số bộ CPU hiện nay và trước đây, có một thanh ghi đặc biệt là thanh ghi tích lũy tích lũy, được dùng cho nhiều tính toán.

• Thanh ghi địa chỉ chứa địa chỉ bộ nhớ và được dùng để truy cập bộ nhớ. Trong một số CPU, có một thanh ghi địa chỉ đặc biệt thanh ghi chỉ mục, dù chúng thường được dùng để sửa đổi địa chỉ hơn là chứa địa chỉ.

• Thanh ghi điều kiện chứa giá trị thực thường dùng để quyết định hoật động thực thi lệnh

• Thanh ghi đa năng (GPRs) có thể chứa cả dữ liệu lẫn địa chỉ., là kết hợp giữa thanh ghi dữ liệu và thanh ghi địa chỉ

• Thanh ghi dấu phẩy động(FPRs) dùng để chứa các kiểu số

• Thanh ghi hằng số chứa các giá trị đọc được (Ví dụ: 0, 1, pi, ...).

• Thanh ghi định hướng chứa dữ liệu cho việc xử lý định hướng đối tượng, thực hiện bởi lệnh SIMD (lệnh đơn, bội dữ kiện)

• Thanh ghi chuyên biệt chứa trạng thái chương trình; thường bao gồm con trỏ chỉ lệnh, con trỏ ngăn xếp, và thanh ghi trạng thái.

• Thanh ghi chỉ lệnh chứa lệnh tạm huỷ

• Thanh ghi chỉ mục dùng cho sửa đổi địa chỉ tác tử trong quá trình thực hiện 1 chương trình

• Trong một số cấu trúc, thanh ghi kiểu mẫu (còn được gọi là thanh ghi thiết bị riêng biệt) chứa dữ liệu và thiết lập liên quan đến bộ xử lý. Vì các thanh ghi này được thiết kế gắn liền với bộ xử lý đặc trưng nên chúng không thể giữ nguyên chuẩn qua các thế hệ của bộ xử lý.

• Thanh ghi điều khiển và trạng thái - Có 3 loại: chương trình phản hồi, thanh ghi chỉ lệnh, chương trình trạng thái từ.

• Thanh ghi liên quan đến tìm nạp thông tin từ bộ nhớ truy cập ngẫu nhiên (RAM), 1 tập hợp lưu giữ các thanh ghi được định vị trên các chip riêng biệt từ CPU (không giống đa số các loại trên, đây thông thường là những thanh ghi không có cấu trúc):

o Thanh ghi bộ nhớ trung gian

o Thanh ghi bộ nhớ địa chỉ

o Thanh ghi bộ nhớ kiểu miền

Thanh ghi ổ cứng cũng tương tự nhưng ở ngoài CPU

12) Các nhóm tập lệnh

C¸c lÖnh mµ chóng ta sÏ nghiªn cøu ®­îc chia lµm 6 nhãm:

1. Nhãm lÖnh truyÒn d÷ liÖu.

2. Nhãm lÖnh sè häc.

3. Nhãm lÖnh logic.

4. Nhãm lÖnh so s¸nh.

5. Nhãm lÖnh ®iÒu khiÓn ch­¬ng tr×nh.

6. C¸c lÖnh ®Æc biÖt.

II.1 . Nhãm lÖnh truyÒn d÷ liÖu (kh«ng ¶nh h­ëng ®Õn c¸c cê).

MOV lÖnh di chuyÓn d÷ lÖu c¬ b¶n . LÖnh nµy cãthÓ sö dông ®Ó di chuyÓn byte (8 bit) hoÆc lêi (16 bit) cña d÷ liÖu. CÊu tróc lÖnh :

MOV ®Ých, nguån.

Trong ®ã to¸n h¹ng ®Ých vµ gèc cã thÓ t×m theo c¸c ®Þa chØ kh¸c nhau, nh­ng ph¶i cã cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ 2 « nhí hoÆc 2 thanh ghi ®o¹n.

C¸c vÝ dô cho trong b¶ng 4-3:

B¶ng 4-3 c¸c vÝ dô vÒ lÖnh MOV.

§Ých Nguån VÝ dô Gi¶i thÝch

1 Bé nhí

2 Thanh ghi

3 Thanh ghi

4 Thanh ghi

Thanh ghi

Bé nhí

Thanh ghi

Tøc thêi MOV 100H, AX

MOV AX, MEM1

MOV AX, BX

MOV AX, 0FFFFH - chuyÓn n«i dung trong AX vµo vÞ trÝ nhí 100H.

- ChuyÓn néi dung trong vÞ trÝ nhí do nh•n MEM1 chØ ra vµo thanh ghi AX.

- ChuyÓn néi dung trong BX vµo thanh ghi AX.

- ChuyÓn gi¸ trÞ h»ng sè FFFFH vµo thanh ghi AX; sè 0 ë ®Çu ®­îc dïng ®Ó ph©n biÖt vµ chØ râ FFFFH lµ mét gi¸ trÞ h»ng chø kh«ng ph¶i lµ mét nh•n.

XCHG -exchange two operands (ho¸n ®æi néi dung 2 to¸n h¹ng).

ViÕt lÖnh: XCHG §Ých, Nguån

Trong ®ã to¸n h¹ng ®Ých vµ nguån cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau, nh­ng ph¶i cã cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ 2 « nhívµ còng kh«ng ®­îc lµ thanh ghi ®o¹n.

VÝ dô:

XCHG AH, AL ; tr¸o néi dung AH vµ AL.

XCHG AL, [BX] ; tr¸o néi dung AL víi « nhí cã ®Þa chØ DS:BX.

IN- Input data from a port (§äc d÷ liÖu tõ cæng vµo thanh Acc)

ViÕt lÖnh: IN Acc, Port

Port lµ ®Þa chØ 8 bit cña cæng, nã cã thÓ cã gi¸ trÞ trong kho¶ng 00H..FFH.

NÕu Acc lµ AL th× d÷ liÖu 8 bit ®­îc ®­a vµo tõ cæng Port.

NÕu Acc lµ AX th× d÷ liÖu 16 bit ®­îc ®­a vµo tõ cæng Port vµ Port+1.

Cã thÓ biÓu diÔn ®Þa chØ cæng th«ng qua thanh ghi DX vµ nh­ vËy ®Þa chØ cæng ®­îc ®Þa chØ ho¸ linh ho¹t h¬n. Lóc nµy ®Þa chØ cæng n»m trong d¶i 0000H..FFFFH vµ lÖnh ®­îc viÕt nh­ sau:

IN Acc, DX

Trong ®ã DX ph¶i ®­îc g¸n tõ tr­íc gi¸ trÞ øng víi cæng.

OUT- Output a byte or word to a port ( §­a d÷ liÖu ra cæng tõ Acc).

ViÕt lÖnh: OUT Port, Acc

NÕu Acc lµ AL th× d÷ liÖu 8 bit ®­îc ®­a ra cæng Por

NÕu Acc lµ AH th× d÷ liÖu 16 bit ®­îc ®­a ra cæng Port vµ cæng Port+1.

T­¬ng tù víi lÖnh IN, ë ®©y còng cã thÓ dïng thanh ghi DX ®Ó chøa ®Þa chØ cæng. Khi ®ã lÖnh ®­îc viÕt nh­ sau:

OUT DX, Acc.

Thanh ghi DX ph¶i ®­îc n¹p ®Þa chØ cæng tõ tr­íc.

LEA (load effective address). LÖnh n¹p ®Þa chØ hiÖu dông vµo thanh ghi, nã kh«ng di chuyÓn néi dung chøa trong ®Þa chØ ®ã. §©y lµ lÖnh ®Ó tÝnh ®Þa chØ lÖch hoÆc ®Þa chØ cña « nhí chän lµm gèc råi n¹p vµo thanh ghi ®• chän.

ViÕt lÖnh: LEA §Ých, nguån.

trong ®ã :

- §Ých th­êng lµ mét trong c¸c thanh ghi BX, CX, DX, BP, SI, DI.

- Nguån lµ tªn biÕn trong ®o¹n DS ®­îc chØ râ trong lÖnh hoÆc « nhí cô thÓ.

VÝ dô:

LEA DX, MSG ; N¹p ®Þa chØ lÖch cña b¶n tin MSG vµo DX.

LEA CX, [BX] [DI] ; N¹p vµo CX ®Þa chØ hiÖu dông do

; BX vµ DI chØ ra: EA=BX+DI.

PUSH/POP Thanh ghi ng¨n xÕp lµ n¬i rÊt thuËn tiÖn ®Ó cÊt gi÷ t¹m d÷ liÖu vµ c¸c to¸n h¹ng cÇn nhí cña ch­¬ng tr×nh. VÝ dô, mét ch­¬ng tr×nh cã thÓ muèn cÊt l¹i c¸c néi dung trong thanh ghi AX ®Ó dïng trong mét sè thao t¸c sau nµy. §Ó thùc hiÖn nhiÖm vô ®ã cã thÓ dïng c¸c lÖnh PUSH vµ POP.

- PUSH CÊt d÷ liÖu vµo ng¨n xÕp.

ViÕt lÖnh: PUSH nguån

M« t¶: SP  SP - 2

Nguån  {SP}.

trong ®ã to¸n h¹ng gèc cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau: cã thÓ lµ c¸c thanh ghi ®a n¨ng, thanh ghi ®o¹n hoÆc « nhí. LÖnh nµy th­êng dïng víi lÖnh POP nh­ mét cÆp ®èi ngÉu ®Ó xö lý c¸c d÷ liÖu vµ tr¹ng th¸i cña chu­¬ng tr×nh chÝnh khi vµo/ra ch­¬ng tr×nh con.

VÝ dô:

PUSH BX ; cÊt BX vµo ng¨n xÕp, t¹i vÞ trÝ do SP chØ ra.

PUSH Table[BX] ; cÊt 2 byte cña vïng d÷ liÖu DS

; cã ®Þa chØ ®Çu t¹i (Table+BX).

- POP LÊy d÷ liÖu tõ ng¨n xÕp.

ViÕt lÖnh: POP §Ých

M« t¶: §Ých  {SP}.

SP  SP + 2

trong ®ã to¸n h¹ng gèc cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau: cã thÓ lµ c¸c thanh ghi ®a n¨ng, thanh ghi ®o¹n (nh­ng kh«ng ®­îc lµ thanh ghi ®o¹ m• CS) hoÆc « nhí. D÷ liÖu ®Ó t¹i ng¨n xÕp kh«ng thay ®æi. Gi¸ trÞ cña SS kh«ng thay ®æi. VÝ dô:

POP DX ; lÊy 2 byte tõ ®Ønh ng¨n xÕp, ®­a vµo DX.

PUSH Table[BX] ; lÊy 2 byte ë ®Ønh ng¨n xÕp råi ®Ó t¹i vïng DS

; cã ®Þa chØ ®Çu t¹i (Table+BX).

PUSHF/POPF C¸c néi dung cña thanh ghi cê cã thÓ ®­îc göi vµo hay lÊy ra khái ng¨n xÕp b»ng c¸c lÖnh PUSPF vµ POPF.

- PUSHF CÊt néi dung thanh ghi cê vµo ng¨n xÕp.

ViÕt lÖnh: PUSHF

M« t¶: SP  SP - 2

RF  {SP}.

D÷ liÖu ®Ó t¹i thanh ghi cê kh«ng thay ®æi. SS kh«ng thay ®æi.

- POPF LÊy 1 tõ, tõ ®Ønh ng¨n xÕp ®­a vµo thanh ghi cê.

ViÕt lÖnh: POPF

M« t¶: RF  {SP}.

SP  SP + 2

Sau lÖnh nµy d÷ liÖu ®Ó t¹i ng¨n xÕp kh«ng thay ®æi. SS kh«ng thay ®æi.

II.2. Nhãm lÖnh sè häc (lµ nhãm lÖnh cã ¶nh h­ëng ®Õn cê).

C¸c lÖnh sè häc bao gåm bèn phÐp tÝnh sè häc c¬ b¶n lµ céng, trõ , nh©n, chia vµ ®¶o dÊu to¸n h¹ng.

ADD/SUB D¹ng tæng qu¸t cña c¸c lÖnh céng (add) vµ trõ (subtract) lµ:

ADD ®Ých, nguån

SUB ®Ých, nguån

M« t¶: ADD: §Ých  §Ých + Nguån

SUB : §Ých  §Ých -Nguån

trong ®ã c¸c to¸n h¹ng ®Ých, nguån cã thÓ t×m ®­îc theo c¸c ®Þa chØ kh¸c nhau, nh­ng ph¶i chøa d÷ liÖu cã cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ hai « nhí vµ còng kh«ng ®­îc lµ thanh ghi ®o¹n.

B¶ng 4-4 tãm t¾t c¸c lo¹i kh¸c nhau cña c¸c to¸n h¹ng ®Ých vµ nguån dïng trong c¸c lÖnh céng vµ trõ:

B¶ng 4-4. c¸c d¹ng to¸n h¹ng trong lÖnh ADD/SUB:

§Ých (n¬i ®Õn) Nguån (gèc)

Thanh ghi

Thanh ghi

Bé nhí

Bé nhí

Thanh ghi Thanh ghi

Bé nhí

Thanh ghi

Tøc thêi (h»ng sè)

Tøc thêi(h»ng sè)

VÝ dô 1:

ADD AX, BX ; AX  AX+BX

ADD AL, 74H ; AX  AX+ 74H

SUB CL, AL ; CL  CL - AL

SUB AX, 0405H ; AX  AX - 0405H.

VÝ dô 2: ViÕt ®o¹n ch­¬ng tr×nh ng«n ng÷ assembly ®Ó céng 5H víi 3H, dïng c¸c thanh ghi AL, BL.

MOV AL, 05H ; AL  05H

MOV BL, 03H ; BL  03H

ADD AL, BL ; AL  05H+03H =08H

MOV 100H, AL ; Di chuyÓn kÕt qu¶ tõ AL vµo vÞ trÝ nhí DS:100H.

MUL/DIV D¹ng tæng qu¸t cña lÖnh nh©n (multiply, MUL) vµ chia (divide, DIV) lµ:

MUL sè nh©n nguån

DIV sè chia nguån

trong ®ã sè nh©n nguån (to¸n h¹ng gèc) cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau. Khi dïng lÖnh nh©n, sè ®­îc nh©n ph¶i ®­îc chuyÓn vµo thanh ghi AX hoÆc AL. Cßn sè nh©n th× cã thÓ chuyÓn vµo thanh ghi kh¸c bÊt kú hoÆc mét ®Þa chØ nhí.

VÝ dô 2:

MUL BX ; sè nh©n n»m trong thanh ghi BX

MUL MEM1 ; sè nh©n n»m trong ®Þa chØ nhí mang nh•n MEM1

Khi hai byte nh©n víi nhau th× kÕt qu¶ ®­îc göi l­u vµo thanh ghi AX.

VÝ dô 3. ViÕt ®o¹n ch­¬ng tr×nh nh©n 5H víi 3H, dïng thanh ghi CL.

MOV AL, 05H ; AL  05H (sè ®­îc nh©n)

MOV CL, 03H ; CL  03H (sè nh©n)

MUL CL ; AL  0FH (kÕt qu¶)

MOV MEM1, AL ; chuyÓn kÕt qu¶ (0FH)

; tõ AL vµo vÞ trÝ nhí cã nh•n MEM1.

Khi nh©n hai lêi (16 bit) víi nhau th× sè ®­îc nh©n ph¶i chuyÓn vµo thanh ghi AX, cßn sè nh©n cã thÓ ë trong mét thanh ghi kh¸c bÊt kú hoÆc trong vÞ trÝ nhí 16 bite. kÕt qu¶ sÏ lµ con sè 32 bit (hoÆc hai lêi) vµ ®­îc chøa trong c¸c thanh ghi DX vµ AX. Lêi cã träng sè lín sÏ ë trong thanh ghi DX vµ lêi cã träng sè nhá sÏ ë trong thanh ghi AX.

VÝ dô 4. ViÕt ®o¹n ch­¬ng tr×nh ®Ó nh©n 3A62H víi 2B14H.

MOV AX, 3A62H ; AX  3A62H

MOV CX, 2B14H ; CX  2B14H

MUL CX ; DXAX  tÝch = 289C63A8H

C¸c lÖnh chia, vÒ c¬ b¶n, còng gièng nh­ c¸c lÖnh nh©n. Trong phÐp chia cì byte, sè chia lµ mét byte cã thÓ ë trong mét thanh ghi hoÆc mét vÞ trÝ nhí. Sè bÞ chia ph¶i lµ mét sè kh«ng dÊu 16 bit chøa trong thanh ghi AX. KÕt qu¶ th­¬ng sè sÏ ë trong thanh ghi AL, cßn sè d­ th× ë trong thanh ghi AH. §èi víi phÐp chia cì lêi th× sè chia 16 bit cã thÓ ®Æt trong thanh ghi hoÆc mét vÞ trÝ nhí. Cßn sè bÞ chia ph¶i lµ mét sè kh«ng dÊu 32 bit ®­îc ®Æt trong c¸c thanh ghi DX vµ AX. Thanh ghi DX sÏ gi÷ lêi cã träng sè cao, thanh ghi AX sÏ gi÷ lêi cã träng sè thÊp. KÕt qu¶ th­¬ng ®Æt trong thanh ghi AX, cßn sè d­ ®Æt trong thanh ghi DX.

VÝ dô 5: ViÕt ®o¹n ch­¬ng tr×nh ®Ó chia 6H cho 3H, dïng thanh ghi CL. MOV AX, 0006H ; AX  6H

MOV CL, 03H ; CL  3H

DIV CL ; AHAL  00H (sè d­), 02H (th­¬ng sè)

Chó ý: 6H ®­îc ®­a vµo thµnh 0006H ®Ó lÊp ®Çy toµn bé thanh ghi AX. Nh­ vËy c¸c byte träng sè cao cña AX sÏ bÞ xo¸ ®Ó tr¸nh bÞ lçi.

VÝ dô 6: ViÕt ®o¹n ch­¬ng tr×nh ®Ó chia 1A034H cho 1002H, dïng thanh ghi BX

MOV AX, 0A034H ; AX  0A034H

MOV DX, 0001H ; DX  0001H

MOV BX, 1002H ; BX  1002H

DIV BX ; DXAX  00H (sè d­)1AH (th­¬ng sè)

INC/DEC §©y lµ lÖnh t¨ng (increment) vµ gi¶m (decrement). LÖnh t¨ng sÏ céng thªm mét ®¬n vÞ vµo to¸n h¹ng, cßn lÖnh gi¶m sÏ trõ mét ®¬n vÞ vµo to¸n h¹ng. C¸c lÖnh nµy rÊt cÇn ®èi víi thao t¸c ®Õm. D¹ng tæng qu¸t cña c¸c lÖnh INC vµ DEC lµ:

INC ®Ých M« t¶: §Ých  §Ých +1

DEC ®Ých M« t¶: §Ých  §Ých -1

To¸n h¹ng ®Ých cã thÓ lµ mét thanh ghi hoÆc mét vÞ trÝ nhí bÊt kú, cã thÓ lµ 1 lêi 16 bit hoÆc 1 byte; cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau.

Chó ý:

- Trong lÖnh t¨ng, nÕu §Ých = FFH (hoÆc FFFFH) th× §Ých + 1 = 00H (hoÆc 0000H) mµ kh«ng ¶nh h­ëng ®Õn cê nhí. LÖnh nµy cho kÕt qu¶ t­¬ng ®­¬ng nh­ lÖnh ADD §Ých, 1 nh­ng ch¹y nhanh h¬n.

- Trong lÖnh gi¶m, nÕu ®Ých lµ 00H (hoÆc 0000H) th× §Ých -1 = FFH (hoÆc FFFFH) mµ kh«ng ¶nh h­ëng ®Õn cê nhí CF. LÖnh nµy cho kÕt qu¶ t­¬ng ®­¬ng víi lÖnh SUB §Ých, 1 nh­ng ch¹y nhanh h¬n.

NEG- Negative a Operand (lÊy bï 2 cña mét to¸n h¹ng hay ®¶o dÊu to¸n h¹ng).

ViÕt lÖnh: NEG §Ých

VÝ dô:

NEG AH ; AH  0 - (AH)

NEG BYTE PTR[BX] ; lÊy bï 2 cña « nhí do BX chØ ra trong DS.

II.3. Nhãm lÖnh logic (cã ¶nh h­ëng ®Õn cê).

C¸c lÖnh logic nh»m thùc hiÖn c¸c phÐp tÝnh Boolean NOT, AND vµ OR. LÖnh NOT th× ®¶o tÊt c¶ c¸c bit trong to¸n h¹ng (byte boÆc lêi). C¸c lÖnh AND/OR thùc hiÖn c¸c phÐp tÝnh AND/OR ®èi víi mét ®«i bit trong to¸n h¹ng nguån vµ to¸n h¹ng ®Ých. C¸c lÖnh nµy cã thÓ dïng víi c¸c to¸n h¹ng cì lêi hoÆc cì byte.

NOT LÊy bï cña mét to¸n h¹ng, ®¶o bit cña mét to¸n h¹ng.

ViÕt lÖnh: NOT §Ých. M« t¶: §Ých  (§Ých)

trong ®ã to¸n h¹ng ®Ých cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau.

LÖnh nµy kh«ng t¸c ®éng ®Õn cê.

VÝ dô 1: X¸c ®Þnh kÕt qu¶ cña ®o¹n ch­¬ng tr×nh sau:

MOV BL, 00110011B

NOT BL

MOV MEM1, BL

Néi dung cña thanh ghi BL ®­îc n¹p vµo lµ 00110011B. Sau khi thùc hiÖn phÐp NOT th× néi dung cña thanh ghi BL lµ 11001100B vµ gi¸ trÞ nµy ®­îc ®­a vaß vÞ trÝ nhí ®­îc chØ ra bëi nh•n MEM1.

AND/OR: Vµ/HoÆc hai to¸n h¹ng. d¹ng tæng qu¸t cña lÖnh AND/OR lµ:

AND §Ých, Nguån

OR §Ých, Nguån

trong ®ã to¸n h¹ng ®Ých vµ nguån cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau, nh­ng ph¶i chøa d÷ liÖu cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ hai « nhí vµ còng kh«ng ®­îc lµ thanh ghi ®o¹n.

AND/OR sÏ thùc hiÖn phÐp tÝnh Boolean ®èi víi c¸c to¸n h¹ng nguån vµ ®Ých. PhÐp AND th­êng dïng ®Ó che ®i/gi÷ l¹i mét vµi bit nµo ®ã cña mét to¸n h¹ng b»ng c¸ch nh©n logic to¸n h¹ng ®ã víi to¸n h¹ng tøc thêi cã c¸c bit 0/1 t¹i c¸c vÞ trÝ cÇn che/gi÷ l¹i t­¬ng øng. PhÐp OR th­êng dïng ®Ó lËp mét vµi bit nµo ®ã cña to¸n h¹ng b»ng c¸ch céng l«gic to¸n h¹ng ®ã víi to¸n h¹ng tøc thêi cã c¸c bit 1 t¹i c¸c vÞ trÝ t­¬ng øng cÇn thiÕt lËp (to¸n h¹ng tøc thêi trong nh÷ng tr­êng hîp nµy cßn ®­îc gäi lµ mÆt n¹).

VÝ dô 2 :

AND AL, BL ; néi dung thanh ghi BL ®­îc giao víi néi dung trong

; thanh ghi AL vµ kÕt qu¶ ®­îc l­u trong thanh ghi

; AL(AX). NÕu con sè trong AL lµ 00001101B vµ

; trong BL lµ 00110011B th× kÕt qu¶ trong thanh ghi

; AL sau phÐp AND lµ: AL 0000001B.

OR AL, BL ; néi dung thanh ghi BL ®­îc hîp víi néi dung trong

; thanh ghi AL tõng bit mét vµ kÕt qu¶ ®­îc l­u trong

;thanh ghi AL(AX). NÕu con sè trong AL lµ

; 00001101B vµ trong BL lµ 00110011B th× kÕt qu¶

;trong thanh ghi AL sau phÐp AND lµ: AL 0011111B.

VÝ dô 3:

AND BL, 0FH ; che 4 bit cao cña BL.

OR BL, 30H ; lËp 4 bit b4 vµ b5 cña BL lªn 1.

SAL- Shift arithmetically Left (DÞch tr¸i sè häc)/ SHL- Shift (Logically) Left (DÞch tr¸i logic).

ViÕt lÖnh: SAL §Ých, CL

SHL §Ých, CL

M« t¶:

Mçi lÇn dÞch MSB sÏ ®­îc ®­a qua cê CF vµ 0 ®­îc ®­a vµo LSB. Thao t¸c kiÓu nµy ®­îc gäi lµ dÞch logic. CL ph¶i ®­îc chøa s½n sè lÇn dÞch mong muèn. Thùc chÊt mçi lÇn dÞch tr¸i t­¬ng ®­¬ng víi mét lÇn lµm phÐp nh©n víi 2 cña sè kh«ng dÊu. V× vËy ta cã thÓ lµm phÐp nh©n sè bÞ nh©n kh«ng dÊu víi 2i b»ng c¸ch dÞch tr¸i sè häc sè bÞ nh©n i lÇn. ChÝnh v× vËy thao t¸c nµy cßn ®­îc gäi lµ dÞch tr¸i sè häc.

Sau lÖnh SAL/SHL, cê CF mang gi¸ trÞ cò cña MSB, v× vËy lÖnh nµy cß dïng ®Ó t¹o cê CF tõ gi¸ trÞ cña MSB lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y cã ®iÒu kiÖn. Cßn cê OF  1 nÕu sau khi dÞch 1 lÇn mµ bit MSB bÞ thay ®æi so víi tr­íc khi dÞch, cê nµy kh«ng ®­îc x¸c ®Þnh sau nhiÒu lÇn dÞch.

LÖnh nµy cËp nhËt c¸c cê SF, ZF, PF. Trong ®ã PF chØ cã ý nghÜa khi to¸n h¹ng lµ 8 bit; cê AF kh«ng x¸c ®Þnh.

SAR - Shift Arithmetically Right (DÞch ph¶i sè häc).

ViÕt lÖnh: SAR §Ých, CL

M« t¶:

Sau mçi lÇn dÞch ph¶i, MSB ®­îc gi÷ nguyªn (nÕu ®©y lµ bit dÊu th× dÊu lu«n kh«ng ®æi sau c¸c lÇn dÞch. Cßn LSB ®­îc ®­a vµo cê CF, CL ph¶i ®­îc chøa s½n sè lÇn dÞch mong muèn. KiÓu dÞch nµy t­¬ng ®­¬ng víi mét lÇn chia cho 2cña sè cã dÊu. V× vËy cã thÓ thay phÐp chia cho 2

ROL - Rotate All Bit to the Left (Quay vßng sang tr¸i).

ViÕt lÖnh: ROL §Ých, CL

M« t¶:

LÖnh nµy dïng ®Ó quay to¸n h¹ng sang tr¸i, MSB sÏ ®­îc ®­a qua cê CF vµ LSB. CL ph¶i chøa sè lÇn quay mong muèn.

Sau lÖnh ROL cê CF mang gi¸ trÞ cò cña MSB, v× vËy lÖnh nµy cß dïng ®Ó t¹o cê CF tõ gi¸ trÞ cña MSB lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y cã ®iÒu kiÖn. Cßn cê OF  1 nÕu sau khi dÞch 1 lÇn mµ bit MSB bÞ thay ®æi so víi tr­íc khi dÞch, cê nµy kh«ng ®­îc x¸c ®Þnh sau nhiÒu lÇn dÞch. LÖnh nµy t¸c ®éng vµo c¸c cê CF, OF.

VÝ dô:

ROL BX, 1 ; quay vßng sang tr¸i thanh ghi BX.

MOV CL, 4 ; ®Æt sè lÇn quay vµo thanh ghi CL.

ROL AL, CL ; quay vßng sang tr¸i thanh ghi AL 4 lÇn.

ROR - Rotate All Bit to the Right (Quay vßng sang ph¶i).

ViÕt lÖnh: ROR §Ých, CL

M« t¶:

LÖnh nµy dïng ®Ó quay to¸n h¹ng sang ph¶i, LSB sÏ ®­îc ®­a qua cê CF vµ MSB. CL ph¶i chøa sè lÇn quay mong muèn.

II.4. Nhãm lÖnh so s¸nh.

CMP - Compare Byte or Word (so s¸nh 2 byte hay 2 tõ).

ViÕt lÖnh: CMP §Ých, Gèc.

Trong ®ã to¸n h¹ng ®Ých vµ gèc cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau, nh­ng ph¶i ch÷a d÷ liÖu cã cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ 2 « nhí.

LÖnh nµy chØ t¹o c¸c cê, kh«ng l­u kÕt qu¶ so s¸nh; sau lÖnh so s¸nh, c¸c to¸n h¹ng kh«ng bÞ thay ®æi. lÖnh nµy th­êng ®­îc dïng ®Ó t¹o cê cho c¸c lÖnh nh¶y cã ®iÒu kiÖn.

C¸c cê chÝnh theo quan hÖ ®Ých vµ nguån khi so s¸nh 2 sè kh«ng dÊu:

CF ZF

§Ých = Nguån 0 1

§Ých > Nguån 0 0

§Ých < Nguån 1 0.

TEST - And Operands to Update Flag (vµ 2 to¸n h¹ng ®Ó t¹o cê).

ViÕt lÖnh: TEST §Ých, Nguån

Trong ®ã to¸n h¹ng ®Ých vµ nguån cã thÓ t×m ®­îc theo c¸c chÕ ®é ®Þa chØ kh¸c nhau, nh­ng ph¶i chøa d÷ liÖu cïng ®é dµi vµ kh«ng ®­îc phÐp ®ång thêi lµ 2 « nhí vµ còng kh«ng ®­îc lµ thanh ghi ®o¹n. Sau lÖnh nµy c¸c to¸n h¹ng kh«ng bÞ thay ®æi vµ kÕt qu¶ kh«ng ®­îc l­u gi÷. C¸c cê ®­îc t¹o ra sÏ ®­îc dïng lµm ®iÒu kiÖn cho c¸c lÖnh nh¶y cã ®iÒu kiÖn. LÖnh nµy còng cã t¸c dông che nh­ mét mÆt n¹.

T¸c ®éng: Xo¸: CF, OF

CËp nhËt: PF, SF, ZF (PF chØ liªn quan ®Õn 8 bit thÊp)

Kh«ng x¸c ®Þnh: AF.

VÝ dô:

TEST AH, AL ; Vµ AH víi AL ®Ó t¹o cê.

TEST AH, 01H ; Bit 0 cña AH = 0?

TEST BP, [BX][DI] ; Vµ BP víi « nhí DS:BX+DI.

II.5 C¸c lÖnh ®iÒu khiÓn ch­¬ng tr×nh.

- LÖnh nh¶y kh«ng ®iÒu kiÖn: LÖnh nµy khiÕn bé vi xö lý b¾t ®Çu thùc hiÖn mét lÖnh míi t¹i ®Þa chØ ®­îc m« t¶ trong lÖnh.

ViÕt lÖnh: JMP Nh•n

LÖnh míi b¾t ®Çu t¹i ®Þa chØ øng víi nh•n. Ch­¬ng tr×nh dÞch sÏ c¨n cø vµo vÞ trÝ nh•n ®Ó x¸c ®Þnh gi¸ trÞ dÞch chuyÓn.

- LÖnh nh¶y cã ®iÒu kiÖn: LÖnh nµy biÓu diÔn thao t¸c: nh¶y (cã ®iÒu kiÖn) tíi nh•n, tøc lµ chØ thùc hiÖn nh¶y tíi nh•n nÕu ®iÒu kiÖn chØ ra ®óng. Nh•n ph¶i n»m c¸ch xa (dÞch ®i mét kho¶ng) -128.. +127 byte so víi lÖnh tiÕp theo sau lÖnh nh¶y cã ®iÒu kiÖn. Ch­¬ng tr×nh dÞch sÏ c¨n cø vµo vÞ trÝ cña nh•n ®Ó x¸c ®Þnh gi¸ trÞ dÞch chuyÓn.

C¸c lÖnh nµy kh«ng t¸c ®éng ®Õn cê.

Ng­êi ta ph©n biÖt c¸c kiÓu nh¶y cã ®iÒu kiÖn:

+ Nh¶y theo kiÓu kh«ng dÊu:

JA/JNBE - Jump if Above/ Jump if Not Below or Equal.

ViÕt lÖnh: JA Nh•n

JNBE Nh•n

JAE/JNB- Jump if Above or Equal/ Jump if Not Below.

ViÕt lÖnh: JAE Nh•n

JNB Nh•n

JB/JNAE- Jump if Below/ Jump if Not Above or Equal.

ViÕt lÖnh: JB Nh•n

JNAE Nh•n.

VÝ dô 1:

CMP AL, 10H ; so s¸nh AL víi 10H.

JA MEM1 ; nh¶y ®Õn nh•n MEM1 nÕu AL cao h¬n 10H.

JB MEM2 ;nh¶y ®Õn nh•n MEM2 nÕu AL thÊp h¬n 10H.

+ Nh¶y theo kiÓu cã dÊu:

JG/JNLE- Jump if Greater than/ Jump if Not Less than or Equal.

ViÕt lÖnh: JG Nh•n

JNLE Nh•n.

JGE/JNL- Jump if Greater than or Equal/ Jump if Not Less than.

ViÕt lÖnh: JGE Nh•n

JNL Nh•n.

JL/JNGE- Jump if Less than/ Jump if Not Greater than or Equal.

JLE/JNG- Jump if Less than or Equal/ Jump if Not Greater than.

+ Nh¶y theo kiÓu ®¬n.

JE/JZ- Jump if Equal/ Jump if Zero.

JNE/JNZ- Jump if Not Equal/ Jump if Not Zero.

JC- Jump if Carry

JNC- Jump if Not Carry

JO- Jump if Overflow

JNO- Jump if Not Overflow

JS- Jump if Sign

JNS- Jump if Not Sign

JP/JPE- Jump if Parity/ Jump if Parity Even

JNP/JPO- Jump if Not Parity/ Jump if Parity Odd

- LÖnh lÆp: LÖnh nµy dïng ®Ó lÆp l¹i ®o¹n ch­¬ng tr×nh (bao gåm c¸c lÖnh n»m trong kho¶ng tö nh•n ®Õn hÕt lÖnh LOOP Nh•n cho ®Õn khi sè lÇn lÆp CX=0. §iÒu nµy cã nghÜa lµ tr­íc khi vµo vßng lÆp, ta ph¶i ®­a sè lÇn lÆp mong muèn vµo thanh ghi CX vµ sau mçi lÇn thùc hiÖn lÖnh LOOP Nh•n th× CX tù ®éng gi¶m ®i 1.

Nh•n ph¶i n»m c¸ch xa (dÞch mét kho¶ng) -128 byte so víi lÖnh tiÕp theo sau lÖnh LOOP.

LÖnh nµy kh«ng t¸c ®éng ®Õn cê.

ViÕt lÖnh: LOOP Nh•n

VÝ dô:

XOR AL, Al ; xo¸ AL

MOV CX, 16 ; sè lÇn lÆp ®­a vµo CX

Lap: INC AL ; t¨ng AL lªn 1

LOOP Lap ; lÆp l¹i 16 lÇn, AL =16.

- LÖnh JCXZ- Jump if CX is Zero (nh¶y nÕu CX = 0).

ViÕt lÖnh: JCXZ Nh•n

§©y lµ lÖnh nh¶y cã ®iÒu kiÖn tíi nh•n nÕu néi dung thanh ®Õm b»ng 0 vµ kh«ng cã liªn hÖ g× víi cß ZF. Nh•n ph¶i n»m c¸ch xa (dÞch ®i mét kho¶ng) -128.. +127 byte so víi lÖnh tiÕp theo sau lÖnh JCXZ. Ch­¬ng tr×nh dÞch sÏ c¨n cø vµo vÞ trÝ nh•n ®Ó x¸c ®Þnh gi¸ trÞ dÞch chuyÓn.

- LÖnh gäi ch­¬ng tr×nh con CALL: LÖnh nµy dïng ®Ó chuyÓn ho¹t ®éng cña bé vi xö lý tõ ch­¬ng tr×nh chÝnh (CTC) sang ch­¬ng tr×nh con (ctc). NÕu ctc ë cïng mét ®o¹n m• víi CTC th× ta cã gäi gÇn. NÕu CTC vµ ctc n»m trong hai ®o¹n m• kh¸c nhau th× ta cã gäi xa. Gäi gÇn vµ gäi xa kh¸c nhau vÒ c¸ch t¹o ®Þa chØ trë vÒ. §Þa chØ trë vÒ lµ ®Þa chØ tiÕp theo ngay sau lÖnh CALL. Khi gäi gÇn th× chØ cÇn cÊt IP cña ®Þa chØ trë vÒ, khi gäi xa th× ph¶i cÊt c¶ CS vµ IP cña ®Þa chØ trë vÒ. §Þa chØ trë vÒ ®­îc tù ®éng cÊt vµo ng¨n xÕp khi b¾t ®Çu thùuc hiÖn lÖnh gäi vµ ®­îc tù ®éng lÊy ra khi gÆp lÖnh trë vÒ RET.

-RET - Return from Procedure to Calling Program (Trë vÒ CTC tõ ctc).

ViÕt lÖnh: RET

Khi gÆp lÖnh trë vÒ RET, vi xö lý kÕt thóc ctc lÊy l¹i ®Þa chØ trë vÒ, bao gåm ®Þa chØ IP (tr­êng hîp gäi gÇn) hoÆc IP vµ CS (trong tr­êng hîp gäi xa) cña lÖnh tiÕp theo sau lÖnh CALL, ®­îc ®Æt trong ng¨n xÕp.

- INT - Interrupt Program Excution (Ng¾t, gi¸n ®o¹n ch­¬ng tr×nh ®ang ch¹y).

ViÕt lÖnh: INT N, N = 0.. FFH

M« t¶: C¸c thao t¸c cña bé vi xö lý khi ch¹y lÖnh INT :

1. SP  SP - 2. {SP}  FR

2. IF  0 (cÊm c¸c ng¾t kh¸c t¸c ®éng), TF  0 (ch¹y suèt).

3. SP  SP - 2, {SP}  CS.

4. SP  SP - 2, {SP}  IP.

5. {N x 4}  IP, {5N x 4 + 2}  CS.

Mçi lÖnh ng¾t øng víi mét ch­¬ng tr×nh phôc vô ng¾t kh¸c nhau cã ®Þa chØ lÊy tõ b¶ng vÐc t¬ ng¾t. B¶ng nµy g«mg 256 vec t¬, chøa ®Þa chØ cña c¸c ch­¬ng tr×nh phôc vô ng¾t t­¬ng øng vµ chiÕm 1 Kb RAM cã ®Þa chØ thÊp nhÊt.

VÝ dô nh­ c¸c ch­¬ng tr×nh phôc vô ng¾t cña BIOS, cña DOS nh­ IO.SYS, MSDOS.SYS.

VÝ dô:

INT 21H

13) Các loại bộ nhớ, cấu tạo, nguyên lý lưu trữ của ổ cứng, ổ quang, cache

14) Cấu tạo, nguyên lý lưu trữ USB Flash

15) Mảng ổ đĩa RAID ?

16) Cấu tạo máy PDA ?

17) Nguyên lý vào ra ? chế độ vào ra trực tiếp

18) Nguyên lý xử lý tính toán song song

19) Cấu tạo và nguyên lý hoạt động của các loại cổng giao tiếp: COM, LPT, USB, Hồng ngoại

20) Làm các bài tập giống trên lớp: biến đổi cơ số, biểu diễn số âm, số thập phân, cộng hai số âm...

Bạn đang đọc truyện trên: Truyen2U.Pro