POPF Lấy 1 từ, từ đỉnh ngăn xếp đưa vào thanh ghi cờ.

Một phần của tài liệu Tài liệu GIỚI THIỆU CHUNG VỀ KIẾN TRÚC MÁY TÍNH pptx (Trang 28 - 30)

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

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ả) (adsbygoogle = window.adsbygoogle || []).push({});

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ú ý:

Một phần của tài liệu Tài liệu GIỚI THIỆU CHUNG VỀ KIẾN TRÚC MÁY TÍNH pptx (Trang 28 - 30)