LỆNH DIV VÀ MOD:

Một phần của tài liệu Mô phỏng vi điều khiển (Trang 124)

Phụ lục B

LỆNH DIV VÀ MOD:

Có các lệnh DIV từ chip x86, nhưng lệnh MOD thì không có trong chip x86.

Chip x86 : Lệnh DIV thực hiện cả hai công việc là: Div và MOD, kết qủa x2 lưu vào các thanh ghi khác nhau. Việc tách và đơn giản đối với 8 bit trong bộ mô phỏng khi sử dụng Mod và Div thì không thể thực hiện được .

8 MOD 3 bằng 2. Ví dụ:

DIV AL,5 ; chiaAL cho 5; kết qủa lưu vào AL

DIV AL,BL ; chia AL cho BL, kết qủa lưu vào AL

MOD AL,5 ; Mod AL cho 5, kết qủa: phần dư đưa vào AL MOD AL,BL ; Mod AL cho BL, phần dư chuyển vào AL Mã máy :

B3 00 05 ; chia AL cho 5, kết quả lưu vào AL

A5 00 01 ; chia AL cho BC, kết quả lưu vào AL

B6 00 05 ; Mod AL cho 5, kết quả lưu vào AL ( phần dư ) A6 00 01 ; Mod AL cho BL, kết quả : phần dư đưa vào AL

LỆNH END: không thiết lập các cờ trong CPU

END : dừng chương trình đang thực hiện. Mã máy của END và HALT là 00. bộ mô phỏng thực hiện được việc này do việc sử dụng đến hoạt động ngừng dao động trong CPU. Trình biên dịch sẽ không thực hiện việc biên dịch sau khi gặp lệnh END .

Trong 1 chương trình chỉ sử dụng 1 lệnh END duy nhất.

LỆNH HALT:không thiết lập các cờ trong CPU

HALT : dừng chương trình đang thực hiện, mã máy lệnh HALT là 00. Bộ mô phỏng thực hiện được điều này khi CPU ngừng hoạt động. Có thể sử dụng vào lệnh HALT trong 1 chương trình.

LỆNH IN VÀ OUT: xuất - nhập

Giao tiếp với thiết bị ngoại vi , không thiết lập các cờ trong CPU Lệnh xuất - nhập được sử dụng bởi các port

Ví dụ :

MOV AL,55 ; chuyển gia trị 0101 0101 vào AL IN 01 ; gởi gía trị trên ra port 1

IN 03 ; được đọc từ port 3 chuyển qua AL IN 00 ; 00 là bàn phím

Mã máy tương ứng :

DO 00 55 ; chuyển 0101 0101 vào AL

F1 01 ; gởi 0101 0101 đến port 1 ( điều khiển đèn giao thông) FO 03 ; được đọc từ port 3 vào AL

FO 00 ; 00 nhập từ bàn phím

Lệnh INT và IRET: Sử dụng với các ngắt Lệnh INT và IRET không thiết lập cờ tràn. Ví dụ:

INT 02 ;gọi lệnh ngắt

;bắt đầu bằng địa chỉ đã được lưu trữ

;tại địa chỉ 02, các địa chỉ 00 đến OF có thể sử ;dụng như vector ngắt IRET ;quay trở lại vị trí ngắt

CC 02 ; gọi việc ngắt.

CD ; quay trở lại việc ngắt.

CPU đẩy gía trị IP + 2 bởi con trỏ lệnh vào ngăn xếp. Sau đó CPU sẽ quay trở lại địa chỉ này. Lệnh con trỏ được đặt vào địa chỉ này đến khi gặp lệnh IRET. CPU sẽ chuyển dữ liệu ra khỏi ngăn xếp nhờ lệnh từ địa chỉ này đến khi gặp lệnh IRET. CPU sẽ chuyển dữ liệu ra khỏi ngăn xếp nhờ lệnh IP và chuyển đến địa chỉ nơi mà nó đang thực hiện.

Lệnh JMP

Ðặt một giá trị mới vào IP, không thiết lập các cờ trong CPU. Ví dụ : JMP FOO ; nhảy đến địa chỉ nhãn FOO. Mã máy tương ứng

CO 12 ; nhảy 12 vị trí . CO FE ; quay lại 12 vị trí .

Lệnh JMP thực hiện được nhờ việc cộng thêm 1 số vào lệnh IP. Số này có thể nằm trong khoảng - 128 đến 127, việc này xác định độ dài nhất có thể.

Lệnh JMP : nhảy không điều kiện, JMP không sử dụng trong CPU.

Lệnh JNO: Jmp Not Overflow JNO không thiết lập cờ CPU. Ví dụ:

JNO FOO ; nhảy đến địa chỉ có nhản FOO Mã máy tương ứng

C6 12 ; nhảy 12 khoảng cách C6 FE ; quay lại 2 khoảng cách

JNO làm việc bằng cách cộng 1 số vào CPU nhờ con trỏ lệnh IP , số này có thể đi từ -128. - . +127. Ðây là khoảng cách lớn nhất mà lệnh nhảy có thể thực hiện

JNO sẽ thực hiện nếu cờ " O" trong CPU không đặt vào.

Lệnh JNS: Jump Not Sign JNS không thiết lập cờ CPU.

Ví dụ : JNS FOO ; nhảy về địa chỉ có nhãn FOO Mã máy tương ứng

C4 12 ; nhảy 12 khoảng cách C4 FE ; quay lại 2 khoảng cách

JNS làm việc bằng cách cộng thêm 1 số vào CPU nhờ con trỏ lệnh, số này có thể chuyển đổi từ -128 đến -127 , đây là khoảng cách lớn nhất có thể nhảy .

Lệnh JNZ: Jump Not Zero JNZ không thiết lập cờ CPU. Ví dụ :

JNZ FOO ; nhảy về nhãn FOO Mã máy tương ứng

C2 12 ; nhảy 12 khoảng cách C2 FE ; quay lại 2 khoảng cách

JNZ làm việc dựa trên nguyên tắc tăng thêm 1 vào CPU nhờ con trỏ lệnh IP. Con số này thay đổi từ -128 đến +127, đây là khoảng cách lớn nhất có thể của lệnh nhảy.

JNZ sẽ thực hiện việc nhảy nếu cờ"Z" trong CPU không đặt vào

Nhảy khi gặp sự tràn. JO không thiết lập cờ CPU. Ví dụ:

JO FOO ; nhảy đến địa chỉ nhãn FOO. Mã máy tương ứng :

C5 12 ; nhảy 12 khoảng cách C5 FE ; quay lại hai khoảng cách.

JO làm việc dự trên nguyên tắc tăng thêm một vào CPU nhờ con trỏ lệnh IP. Con số này thay đổi từ -128 đến +127 , đây là khoảng cách có thể nhảy lớn nhất.

JO sẽ thực hiện việc nhảy nếu trong CPU có đặt cờ "O".

Lệnh JS: Jump Sign JS không thiết lập cờ CPU.

Ví dụ :

JS FOO ; nhảy đến địa chỉ nhãn FOO Mã máy tương ứng

C3 12 ; nhảy 12 khoảng cách

C3 FE ; quay về lại hai khoảng cách.

JS làm việc dựa trên nguyên tắc tăng thêm một vào CPU nhờ IP. Con số này thay đổi từ -128 đến +127, đây là khoảng cách lớn nhất có thể nhảy.

Lệnh JZ( Jump Zero ) JZ không thiết lập cờ CPU.

Ví dụ :

JZ FOO ; nhảy về địa chỉ nhãn FOO Mã máy tương ứng

C1 12 ; nhảy 12 khoảng cách C1 FE ; quay lại hai khoảng cách

JZ làm việc dựa trên nguyên tắc tăng thêm một vào CPU, nhờ con trỏ lệnh. Con số này thay đổi từ -128 đến +127, đây là khoảng cách lớn nhất mà lệnh nhảy có thể thực hiện. Lệnh JZ sẽ thực hiện việc nhảy nếu cờ Z" được đặt vào CPU.

Lệnh MOV

Chuyển dữ liệu từ nơi này đến nơi khác. Ví dụ :

MOV AL, 12 ; chuyển 12 hex vào AL

MOV BL, [2F] ; chuyển nội dung trong ô nhớ [2F] vào BL MOV [33], CL ; chuyển dữ liệu từ thanh ghi CL vào ô nhớ [33]

MOV AL, [DL]; chuyển nội dung trong thanh ghi DL vào một ;vùng nhớ, từ vùng nhớ đó chuyển vào AL.

MOV [BL], CL ; chuyển nội dung trong thanh ghi BL vào ô nhớ ;có địa chỉ trong thanh ghi CL.

Mã máy tương ứng

DU 00 12 ; chuyển 12 hex vào AL

D1 01 2F ; chuyển nội dung ô nhớ 2F vào BL D2 33 02; chuyển dữ liệu từ CL đến ô nhớ [33]

D4 02 03; chuyển dữ liệu từ BL đến ô nhớ, sau đó chuyển ; ô nhớ đến CL.

Một phần của tài liệu Mô phỏng vi điều khiển (Trang 124)

Tải bản đầy đủ (PDF)

(141 trang)