1. Trang chủ
  2. » Tất cả

132-VXL-Kiểm tra-Đáp án

5 1 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 369,17 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Vẽ hình trực tiếp lên mạch giải mã địa chỉ phía trên.. Tín hiệu chọn chip Vùng địa chỉ Hex... Chỉ dùng các cổng logic để thiết kế mạch... Thí dụ nếu cc = NC thì xét xem lệnh JR NC, CON

Trang 1

ĐHQG TPHCM–ĐH Bách Khoa

Khoa Đ-ĐT–BM Điện Tử

GV soạn đáp án: Hồ Trung Mỹ

Điểm Đề kiểm tra giửa HK 2 – NH: 2013-2014

Môn: Vi xử lý – Mã MH: 402030

Ngày thi: 26/03/2014 – Thời gian làm bài: 75 phút

Đề có 4 trang và SV làm trực tiếp trên đề

(SV được sử dụng tài liệu của mình, KHÔNG được dùng Laptop)

Chữ ký giám thị

Họ và tên SV: MSSV: Nhóm:

Hồ Trung Mỹ

Câu 1: (2 đ)

Mạch giải mã địa chỉ cho các bộ nhớ (có số bit dữ liệu là 8) dùng 74138 như hình sau:

a) Xác định vùng địa chỉ của các ngõ ra /Yi:

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Vùng địa chỉ (hex)

0 0 0 0 X X X X X X X X X X X X /Y0: 0000 – 0FFF

0 0 0 1 X X X X X X X X X X X X /Y1: 1000 – 1FFF

0 0 1 0 X X X X X X X X X X X X /Y2: 2000 – 2FFF

0 0 1 1 X X X X X X X X X X X X /Y3: 3000 – 3FFF

0 1 0 0 X X X X X X X X X X X X /Y4: 4000 – 4FFF

0 1 0 1 X X X X X X X X X X X X /Y5: 5000 – 5FFF

0 1 1 0 X X X X X X X X X X X X /Y6: 6000 – 6FFF

0 1 1 1 X X X X X X X X X X X X /Y7: 7000 – 7FFF

b) Từ mạch giải mã trên, sử dụng thêm các cổng logic cần thiết để tạo ra các tín hiệu chọn chip /CS0,

/CS1 (giải mã địa chỉ toàn phần) tích cực thấp và có các vùng địa chỉ sau Vẽ hình trực tiếp lên

mạch giải mã địa chỉ phía trên

Tín hiệu chọn chip Vùng địa chỉ (Hex)

Trang 2

Câu 2: (3 đ)

a) (1 đ) Cho trước các mạch giải mã địa chỉ bộ nhớ sau:

Mạch giải mã địa chỉ ban đầu Mạch giải mã địa chỉ mới

i) (0.5 đ) Bộ nhớ này có vùng địa chỉ là: A8000H – AFFFFH

ii) (0.5 đ) Vẽ lại mạch giải mã địa chỉ mới (không cần vẽ lại bộ nhớ) để có địa chỉ bắt đầu là 50000H Chỉ

dùng các cổng logic để thiết kế mạch

b) (0.5 đ) Điền vào bảng sau giá trị của các biến 2 byte X (bắt đầu từ địa chì 1000H) và Y (bắt đầu từ địa

chì 1002H) nếu sắp xếp thứ tự byte trong bộ nhớ theo: i) little endian và ii) big endian

Địa chì Nội dung

1000H A5H

1001H 42H

1002H 27H

1003H C3H

Biến 2 byte

Dạng hex Dạng thập phân

có dấu Dạng hex

Dạng thập phân

có dấu

c) (0.5 đ) Hãy cho biết giá trị của các cờ trong thanh ghi F của Z80 sau khi thực thi các lệnh sau:

LD A, 75H ADD A, 6CH

d) (1 đ) Viết các “từ điều khiển” để thực hiện phép toán sau: R3  5 x R1/4 – 3 x (bù 2 của R2)

Các tác vụ Chú thích Từ điểu khiển

SELA SELB SELD OPR R3  R1/2 Dịch phải = chia 2 001 000 011 10000

R3  R3/2 = R1/4 Dịch phải = chia 2 011 000 011 10000

R3  R3 + R1 R1/4 + R1 = 5R1/4 011 001 011 00010

R2  R2 + 1 R2 = bù 2 của R2 010 000 010 00001

R4  R2 + R2 R4 = 2 x (bù 2 của R2) 010 010 100 00010

R4  R4 + R2 R4 = 3 x (bù 2 của R2) 100 010 100 00010

Trang 3

 Ý nghĩa của các vùng trong “từ điều khiển”:

Mã nhị phân SELA SELB SELD

OPR Tác vụ Ký hiệu

00000 Chuyển A (output = A) TSFA

Câu 3: (2.5 đ)

a) (1 đ) Trước khi thực thi đoạn chương trình Z80 sau, giả sử các nội dung thanh ghi:

HL = 0203H, IX = 0204H, DE = 5678H, SP = 0205H

Bộ nhớ Hợp ngữ Z80 A D E SP

Địa chỉ SRAM Trị mới

0200H A5H

0205H 13H

0206H 02H

LD A, (IX + 2)

LD E, (IX – 3)

LD D, (HL) PUSH DE INC HL PUSH HL

02H

_

_

_

_

_

_

_

C6H

_

_

_

_

47H

_

_

_

_

_

_

_

0203H

_

0201H

Đoạn chương trình trên được thực thi liên tục, hãy điền vào bảng các thanh ghi có trị bị thay đổi sau khi Z80 thực thi mỗi dòng lệnh và nội dung các ô nhớ bị thay đổi

b) (0.5 đ) Hãy cho biết cách định địa chỉ của các toán hạng trong các lệnh sau:

LD A, (IX + 2) Thanh ghi Chỉ số

LD D, (HL) Thanh ghi Gián tiếp thanh ghi

c) (0.5 đ) Hãy đánh dấu  vào ô nào có mã điều kiện (cc) làm cho đoạn chương trình sau nhảy đến nhãn

CONT Thí dụ nếu cc = NC thì xét xem lệnh JR NC, CONT có nhảy đến nhãn CONT không? Nếu có

thì đánh dấu  vào ô NC trong bảng (giả sử A đang chứa giá trị 12)

CP –18

d) (0.5 đ) Lệnh nhảy JR NEXT có mã máy chứa trong bộ nhớ chương trình lần lượt là 18H, 57H Nếu lệnh này bắt đầu ở địa chỉ 0218H, như vậy nhãn NEXT có địa chỉ là bao nhiêu? Tại sao?

Ta có: Địa chỉ lệnh kế = địa chỉ lệnh hiện tại + chiều dài lệnh = 0218H + 2 = 021AH

Địa chỉ nhảy đến (NEXT) = Địa chỉ lệnh kế + offset = 021AH + 57H = 0271H

Câu 4: (1.5 đ) Phân tích chương trình hợp ngữ Z80

Giả sử ta có sẵn trong bộ nhớ bắt đầu từ địa chỉ 0200H các nội dung sau:

0, 1, 4, 9, 16, 25, 36, 49, 64, 81

nghĩa là (0200H) = 0, (0201H) = 1, , (0209H) = 81

Trang 4

Ch ương trình Bài làm

ORG 100H

LD H,02H

IN A,(01H)

AND 3

CP 0

JR Z, L1

CP 2

JR Z,L3

JR NC,L4

L2: SRA B

SRA B

SLA C

LD A,B

ADD A,C

JR Fin

L1: LD A,B

SUB C

JP P, Nxt

NEG

Nxt: JR Fin

L3: LD A,B

CP C

JR NC,Fin

LD A,C

JR Fin

L4: LD A,B

AND 0FH

LD L,A

LD A,(HL)

Fin: LD (Result),A

Here: JR Here

Result: DEFS 1

ORG 200H DEFB 0 DEFB 1 DEFB 4 DEFB 9 DEFB 16 DEFB 25 DEFB 36 DEFB 49 DEFB 64 DEFB 81 END

a) (0.5 đ) Giả sử B và C chứa các giá trị nguyên không dấu luôn nhỏ hơn 10, hãy tính giá trị cất vào ô nhớ Result với các trường hợp sau:

Chú ý: giá trị A trong bảng trên là giá trị sau lệnh AND 3 b) (1 đ) Hãy điền vào bảng hoạt động của chương trình này (Chú ý: B và C chứa các giá trị nguyên không dấu < 10)

0 (Result) = | B – C |

1 (Result) = B/4 + 2 x C

2 (Result) = max(B, C)

3 (Result) = B x B = B 2

Câu 5: (1 đ) Lập trình hợp ngữ Z80

a) (0.5 đ) Viết chương trình con BCD2Bin để đổi 1 số BCD 2 ký số trong thanh ghi A thành số nhị phân tương ứng đặt lại vào thanh ghi A

b) (0.5 đ) Viết đoạn chương trình bắt đầu từ địa chỉ 100H thực hiện chuyển 5 byte (mỗi byte là số BCD 2

ký số) từng vùng có địa chỉ đầu 0220H sang vùng có địa chỉ đầu 0230H, trước khi điền mỗi byte vào vùng mới thì đổi nó sang nhị phân

Chương trình con BCD2Bin Đoạn chương trình áp dụng BCD2Bin

BCD2Bin:

LD D,A ; A = abH (dạng BCD)

AND 0FH ; A = 0bH = b

LD E,A ; E = 0bH = b

LD A,D

AND 0F0H ; A = a0H và cờ CY = 0

RLCA ; hoặc 4 RRCA

RLCA

RLCA

RLCA ; A = 0aH

ADD A,A ; A = 2a

LD D,A ; D = 2a

ADD A,A ; A = 2a + 2a = 4a

ADD A,A ; A = 4a + 4a = 8a

ADD A,D ; A = 8a + 2a = 10a

ADD A,E ; A = 10a + b (dạng binary)

RET

ORG 100h

LD B,5

LD HL,0220H

LD IX,0230H Loop: LD A,(HL)

CALL BCD2Bin

LD (IX+0),A INC HL INC IX DJNZ Loop Here: JR Here

Kết thúc bài kiểm tra

Trang 5

Phụ lục: Các cách giải khác cho câu 5

1) Tối ưu mã cho cách đã giải:

Chương trình con BCD2Bin Đoạn chương trình áp dụng BCD2Bin

BCD2Bin:

LD D,A ; A = abH (dạng BCD)

AND 0FH ; A = 0bH = b

LD E,A ; E = 0bH = b

LD A,D

AND 0F0H ; A = a0H và cờ CY = 0

RRCA ; A = a0H/2 = 16a/2 = 8a

LD D,A ; D = 8a

RRCA ; A = 8a/2 = 4a

RRCA ; A = 4a/2 = 2a

ADD A,D; A = 2a + 8a = 10a

ADD A,E ; A = 10a + b (dạng binary)

RET

; Nhận xét:

; nếu 0 <= a <=9 thì 16a = a x 2 4 = a << 4 = a0H

; RRCA = A >> 1

ORG 100h

LD B,5

LD IX,0220H Loop: LD A,(IX)

CALL BCD2Bin

LD (IX + 10H),A INC IX

DJNZ Loop Here: JR Here

; Nhận xét:

; Hai địa chỉ của đích và nguồn lệch nhau

; 0230H – 0220H = 0010H

2) Nhân 10 bằng phép cộng nhiều lần:

Chương trình con BCD2Bin Đoạn chương trình áp dụng BCD2Bin

BCD2Bin:

PUSH BC

LD B,A ; A = abH (dạng BCD)

AND 0FH ; A = 0bH = b

LD C,A ; C = 0bH = b

LD A,B

AND 0F0H ; A = a0H và cờ CY = 0

RLCA ; hoặc 4 RRCA

RLCA

RLCA

RLCA ; A = 0aH = a

LD B,A ; B = a

LD A,C ; A = b

LD C,B ; C = a

Loop: ADD A,C ; A = A + a

DJNZ Loop

; A = 10a + b (dạng binary)

POP BC

RET

ORG 100h

LD B,5

LD HL,0220H

LD DE,0230H Loop: LD A,(HL)

CALL BCD2Bin

LD (DE),A INC HL INC DE DJNZ Loop Here: JR Here

3) Chuyển BCD sang nhị phân bằng cách tra bảng: (SV hãy tự viết cho cách này!)

Ngày đăng: 24/12/2018, 11:34

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w