============================ Answers to Old Midterm Tests ============================ - Ian! D. Allen - idallen@idallen.ca - www.idallen.com old_midterm_a.pdf Answer Sheet 010 1100 1010 1011 1101 1110 1111 = 2 C A B D E F 9BA + B11 = 4CB C O 801 + 7FF = 000 Z C OK-SIGN 796 + 514 = CAA S O OK-UNSIGN FFF + FFF = FFE C S OK-SIGN 800 + 800 = 000 Z C O 1196 = 4*16**2 + 10*16**1 + 12 = 04AC -1197 = FB53 (add one to 04AC above to get 04AD, complement, add one) -1 = FFFF 1 / (3.33+ GHz) = 1/3.33+ * 1/10**9 = 0.3 * 10**(-9) = 0.3 ns 1 / (25 ns) = 1/25 * 1/10**(-9) = 1/25 * 10**9 = 1/25 * 10**3 * 10**6 = 10**3/25 MHz = 40 MHz 2**24 = 2**4 * 2**20 = 16 MiBi 0.6875 = 0.5 + 0.125 + 0.0625 = 0.1011(2) in binary 32,768 < 32,770 < 65,536 2**15 < 32,770 < 2**16 --> 16 bits ASCII 'A' = 0x41 so Unicode 'A' = 0x0041 IEEE 754 32-bit floating point number max = 10**38 10 bits = 2**10 = 1024 numbers - signed means half (512) are positive and half (512) are negative --> Smallest: -512 Largest: +511 Giga / Kilo = 10**9 / 10**3 = 10**6 = a million tera = 1024 Giga = 2**10 * 2**30 = 2**40 milli / nano = 10**(-3) / 10**(-9) = 10**6 = six orders of magnitude IETF - Internet Engineering Task Force 111(-2) = (-2)**2 + (-2)**1 + (-2)**0 = 4 + -2 + 1 = 3 ASCII Upper Case sorts before Lower Case, e.g. 'A' < 'a' (a'b')' == ab --> FALSE because (a'b')' = a'' + b'' = a+b (deMorgan) (a' + b')' == a + b --> FALSE because (a' + b')' = a''b'' = ab (deMorgan) Call the ADD routine unless the COST is greater than zero and the CODE is sold --> IF NOT( COST > 0 AND CODE == sold ) call ADD : original --> IF NOT(COST > 0) OR NOT(CODE == sold) call ADD : deMorgan --> IF COST <= 0 OR CODE != sold call ADD : complement --> IF COST <= 0 || CODE != sold call ADD : answer ------------------------------------------------------------------------------- old_midterm_b.pdf Answer Sheet 1. 80F + 7F1 = 000 Z C OK_SIGN 9B1 + B1A = 4CB C O FFF + FFF = FFE C S OK_SIGN 794 + 516 = CAA S O OK_UNSIGN 800 + 800 = 000 Z C O 2. 16 bit means 2**16 numbers, but half are negative, so 2**15 are positive, but that includes zero, so the answer is (2**15)-1 or 32,767 3. 16 bits 4. 0xC1 0x41 5. running programs larger than physical memory 6. call saves the return address 7. only ADD and SUB 8. see notes for LMC cycle 9. JMP and CALL would not work 10. 00 119 WHILE LDA TEN 01 416 SUB COUNT 02 802 SKP 03 912 JMP ENDWH 04 115 LDA SUM 05 316 ADD COUNT 06 316 ADD COUNT 07 215 STO SUM 08 116 LDA COUNT 09 317 ADD ONE 10 216 STO COUNT 11 900 JMP WHILE 12 115 ENDWH LDA SUM 13 600 OUT 14 700 HLT 15 000 SUM DAT 000 16 001 COUNT DAT 001 17 001 ONE DAT 001 18 002 TWO DAT 002 19 010 TEN DAT 010 11. Add up double the numbers from 1 to 10, inclusive. 12. 11 13. no - one is a constant, the other is a variable 14. 00 116 LDA H6 01 415 SUB H5 02 217 STO X 03 600 OUT 04 800 SKN 05 600 OUT 06 500 IN 07 417 SUB X 08 217 STO X 09 801 SKZ 10 600 OUT 11 417 SUB X 12 802 SKP 13 600 OUT 14 700 HLT 15 500 H5 DAT 500 ; constant 16 600 H6 DAT 600 ; constant 17 700 X DAT 700 ; variable 15. 100 100 200 16. 03FF 17. 039D 18. '3' 19. not an ASCII character 20. 'N' 21. -1 22. 10 23. -6 24. F89BC01A -- | Ian! D. Allen - idallen@idallen.ca - Ottawa, Ontario, Canada | Home Page: http://idallen.com/ Contact Improv: http://contactimprov.ca/ | College professor (Free/Libre GNU+Linux) at: http://teaching.idallen.com/ | Defend digital freedom: http://eff.org/ and have fun: http://fools.ca/