Microprocessors, Semester 2 2011-2012 Midterm Exam (Kiểm tra giữa kỳ) Duration: 90 minutes (90 phút) Open book exam

(Đề thi mở)
Questions:

Họ và Tên

Nhóm Điểm

/ 10
Answers: a.ADDC.W #0,dst b.SUB.W #1,dst c.SUB.W #2,dst d.ADD.W #1,dst e.ADD.W) #2,dst f.XOR.B #0FFh,dst g.ADD.W dst,dst h.ADDC.B dst,dst i.MOV.W #0,dst j.MOV #0,R3 k.MOV @SP+,PC

Bài 1. (1 điểm) Assembler sẽ thay thế các giả lệnh sau đây bằng các lệnh thực sự nào của MSP430?
(What native MSP430 instruction is replaced by the assembler for each of the following emulated instruction?)

a. b. c. d. e. f. g. h. i. j. k.

ADC.W dst DEC dst DECD dst INC dst INCD dst INV.B dst RLA.W dst RLC.B dst CLR dst NOP RET

Bài 2. (1 điểm) Một chương trình chứa 2 lệnh sau đây. Sau khi được dịch và nạp vào bộ nhớ, hãy cho biết giá trị tai các vị trí nhớ 0x800a và 0x800c. Ghi kết quả ở cả hai hệ nhị phân và hexa.
(An assembly language program contains the following two instructions. After assembly is completed, what is in memory locations 0x800a and 0x800c? (Give your answer in hexadecimal with “0x” and in binary.)

0x800a:5404 (0101 0100 0000 0100) 0x800c:23FE (0010 0011 1111 1110)

label:

org 0x800a rla.w r4 jne label

w #100. POP. PUSH F.w #1. mov.w r5. Tiếp tục thực hiện lần lượt các hoạt động sau. 2 i. A. mov. POP. mov. sub. PUSH J.E. mov. 6 f. POP. POP. PUSH I. POP.r6 e.r5 h. PUSH C. POP. 1 c. 2 h. Lúc nào stack chứa nhiều phần tử nhất? c. b. add. PUSH D. stack chứa những phần tử nào? b. jmp label i.r6 b.F Sau khi PUSH F lần thứ nhất gồm A.r5 g. PUSH H.F.r6 c.r6 d.Bài 3. 2 a. POP.w 10(r5). (1 điểm) Các hoạt động sau đây lần lượt được thực hiện đối với stack của MSP430: PUSH A. PUSH B. Sau lệnh PUSH F cuối cùng.b @r5. 3 e. POP. 1 g. POP. 1 b. jne label a.b 10(r5). 2 d. add. POP.F A.C. PUSH F a. (1 điểm) Mỗi một lệnh sau đây được thực hiện trong bao nhiêu chu kỳ? (How many cycles are used by each of the following instructions:) a. POP.20(r6) f. PUSH K.M .b r5. c. PUSH E. stack sẽ chứa các phần tử nào? PUSH G. PUSH L. PUSH M Bài 4.

(Consider the following instructions given in the table below. R7 CMP R5. R7 ADDC R5. Giả sử rằng các điều kiện đầu này là như nhau với từng lệnh. For each instruction determine changes in registers after its execution. R7 AND R5.) Instruction ADD. R7 BIC R5. R7 BIT R5.B R5. Với từng lệnh hãy xác định việc thay đổi giá trị của các thanh ghi và các cờ V.B R5. Initial value of registers R2. Fill in the empty cells in the table. always start from the initial conditions in registers). Cho biết nội dung của vùng nhớ liên quan được khởi tạo bởi các directive này. R7=0x1357. R7=0x1357. N. R7 SUB.Bài 5.) ORG 0xF000 b1: DB 5 b2: DB -122 b3: DB 10110111b b4: DB 0xA0 EVEN tf EQU 25 w1: DW 32330 w2: DW -32000 s1: DB 'ABCD' Label b1 b2 B3 B4 W1 W2 S1 Address [hex] 0xF000 0xF001 0xF002 0xF003 0xF004 0xF005 0xF006 0xF007 0xF008 0xF009 0xF00A 0xF00B Memory[7:0] [hex] 0x05 0x86 0xB7 0xA0 0x4A 0x7E 0x00 0x83 0x41 0x42 0x43 0x44 Bài 6.. R5. MSP430 is a little-endian architecture. R7 CMP. R7 ADD R5. and R7 is as follows: R2=0x0007. R7 BIS R5. Z. Hãy ghi các giá trị vào bảng bên phải. MSP430 có kiến trúc little-endian. R7 SUBC R5. Giá trị ban đầu của các thanh ghi lần lượt là: R2=0x0007. C sau khi lệnh được thực hiện và ghi vào các ô trống trong bảng. Assume the starting conditions are the same for each question (i.e. R5=0xAA55. Show the content of relevant region of memory initialized by these directives.B R7 RRC R7 RRA.B R5. (2 điểm) Xét các lệnh ở bảng bên phải. (1 điểm) Xét 1 đoạn chương trình nguồn Assembly có sử dụng các directive sau đây. R7 XOR.B R5. Fill in the table.B R7 RRA R7 R7=0x???? 0x00AC 0xBDAC 0xBDAD 0x0002 0x6902 0x1357 0x1357 0x1357 0x1102 0xBB57 0x0255 0x0002 0x5713 0x00AB 0x89AB 0x002B 0x09AB V 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 N 1 1 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 Z 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 C 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 . (Consider the following assembly directives (see below). R5=0xAA55. R7 SWB R7 (SWPB) RRC.

Từng số đó có thể được coi là một số nhị phân không dấu hoặc có dấu 16-bit (số bù 2). Show your work as illustrated in (a).1101 = 5DDD16 = 5*163 + 13*162 + 13*161 + 13*160 = 2402910 => A22316 = -2402910 (b)unsigned: 81C2h = 8*16^3 + 1*16^2 + 12*16 + 1 Signed: 81C2h = 1000 0001 1100 0010 b => số âm 2’s complement: 0111 1110 0011 1110 = 7E3Eh = 7*16^3 + 14*16^2 + 3*16 + 14 = 32318 => -32318 (c) (d) (e) . Provide the decimal value for each number and interpretation. Cho biết giá trị thập phân của chúng bằng cách ghi kết quả vào các cột tương ứng và ghi vắn tắt quá trình tính như cách làm bên dưới với trường hợp (a).0010.00112 => this is a negative number (đây là một số âm).0010. Its 2’s complement is: 0101. (1 điểm) Cho các số hexa 16-bit ở cột thứ hai. 16-bit hexadecimal A223 81C2 9689 A2EB 39CD Unsigned int (Số không dấu) 41507 33218 38537 41707 14797 Signed int (Số có dấu) -24029 -32318 -26999 -23829 14797 (a) (b) (c) (d) (e) (a) Unsigned (không dấu): A22316 = 10*163 + 2*162 + 2*161 + 3*160 = 4150710 Signed (có dấu): A22316 = 1010.Bài 7. Consider the following 16-bit hexadecimal numbers (second column).1101.1101. Each of these values can be interpreted as an unsigned 16-bit integer or a signed 16-bit integer represented in 2’s complement.

and Z accordingly.N và Z.V. two’s complement 5510 = 00111111 5510 + 10510 10510 = 01101001 Kết quả: -8810 10101000 = -8810 C=0 V=1 N=1 Z=0 (b) 8-bit. two’s complement FFBB = 1111 1111 1011 1011 FFBB16 – 008816 0088 = 0000 0000 1000 1000 Kết quả -205 FF33 = 1111 1111 0011 0011 C=1V=0N=1Z=0 (d) 16-bit. V. (a) 8-bit. Consider the following arithmetic operations.Bài 8. two’s complement FF5116 + 3410 Kết quả -141 C=0V=0N=1Z=0 (e) 16-bit.6810 -68 = 10111100 Kết quả -123 1000 0101 = -123 C=1V=0N=1Z=0 (c) 16-bit. Ghi vắn tắt quá trình thực hiện ở bên cạnh tương tự như câu a. (1 điểm) Thực hiện các phép toán số học sau đây với các toán hạng là số có dấu. two’s complement 00AF16 + 9910 Kết quả 274 C=0V=0N=0Z=0 . Cho biết kết quả ở hệ thập phân và giá trị của các cờ C. Find the results in decimal and set the flags C. two’s complement -55 = 11001001 (-55)10 . N.

Giá trị ban đầu của các thanh ghi lần lượt là: R5=0xF000. R7 MOV. Length [words] 1 1 2 2 2 2 2 2 1 1 2 2 Instruction Word(s) [hex] 0x4507 0x4447 0x4517 0004 0x4557 0003 0x4657 FFFD 0x4017 DEEC 0x4057 DEF4 0x4217 F00C 0x4567 0x4537 0x4037 002D 0x4077 002D Source Operand Addressing Mode Register Register Index Index Index Symbolic Symbolic Absolute Indirect Indirect auto Immediate Immediate R7=? [hex] 0xF000 0x0000 0x0203 0x00FF 0x0002 0x0203 0x00DA 0xCDDA 0x0004 0x0504 0x002D 0x002D Address [hex] 0xF000 0xF002 TONI 0xF004 0xF006 0xF008 0xF00A EDE 0xF00C 0xF00E Tính toán nháp tại đây: Memory[15:0] [hex] 0x0504 0xFFEE 0x0203 0x3304 0xF014 0x2244 0xCDDA 0xEFDD Hết (The end) . R7=0xFFFF.Bài 9. R7 MOV. R7 MOV. Address (i) (ii) (a) (b) (c) (d) (e) (f) (g) (h) (i) (j) Label 0x1116 0x1116 0x1116 0x1116 0x1116 0x1116 0x1116 0x1116 0x1116 0x1116 0x1116 0x1116 Instruction MOV R5. R7 MOV &EDE.) Instr. Nội dung ban đầu của bộ nhớ được cho ở bảng dưới đó. The initial content of memory is given below. các từ lệnh viết ở hệ hexa. the instruction words (in hexadecimal). Assume the starting conditions are the same for each question (i. R7 MOV TONI.e. R7 MOV @R5+.B @R5. Giả sử rằng điều kiện ban đầu là như nhau đối với các lệnh. R7 MOV 4(R5).B -3(R6). source operand addressing mode.B R5. and the content of register R7 after execution of each instruction. always start from initial conditions in memory) and given register values.B 3(R5). R7 MOV #45. R7 MOV. (1 điểm) Xét các lệnh trong bảng dưới đây.. R7 MOV.B #45. mode địa chỉ của toán hạng nguồn và giá trị của thanh ghi R7 sau khi lệnh được thực hiện để ghi vào các ô trống trong bảng. R6=0xF008. (Consider the following instructions given in the table below. Với từng lệnh hãy xác định độ dài của nó (tính bằng word).B EDE. For each instruction determine its length (in words). R7=0xFFFF. R6. R7 MOV. Fill in the empty cells in the table. R7 Instr. Initial value of registers R5. R6=0xF008. and R7 is as follows: R5=0xF000.

Sign up to vote on this title
UsefulNot useful