1 / 22

例 : 一台简单计算机

例 : 一台简单计算机. 初步了解: 指令和指令系统 程序 / 指令的执行过程 汇编语言程序 数据通路. 8 位寄存器,用于存放被加 ( 减 ) 数和运算结果. 运算器. 完成 8 位加减法运算,被加 ( 减 ) 数是 A ,加 ( 减 ) 数是 M ,结果送累加器 A. 地址译码器. 存储器. ALU. 存储器容量为 32 个字节,地址码为 5 位. 控制器. 存放当前正在执行的指令和指令地址. +1. 例 : 一个简单的 8 位计算机. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

monifa
Download Presentation

例 : 一台简单计算机

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 例: 一台简单计算机 • 初步了解: • 指令和指令系统 • 程序/指令的执行过程 • 汇编语言程序 • 数据通路

  2. 8位寄存器,用于存放被加(减)数和运算结果 运算器 完成8位加减法运算,被加(减)数是A,加(减)数是M,结果送累加器A 地址译码器 存储器 ALU 存储器容量为32个字节,地址码为5位 控制器 存放当前正在执行的指令和指令地址 +1 例: 一个简单的8位计算机 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 累加器A MUX 译码器 MUX 指令寄存器 指令计数器 读写寄存器M

  3. 7 6 5 4 3 2 1 0 操作码 存储器地址addr 指令格式与指令系统 指令格式: 指令系统: addr 表示内存地址 ; (addr)表示地址为addr的存储单元的内容 A 表示累加器 ; (A)表示累加器的内容

  4. 乘法程序 假设:(11)=被乘数; (12)=乘数; (13)=部分乘积; (14)=常数1; (15)=常数0

  5. 思想:用加法完成乘法运算 开始 A ← 0 保存部分乘积 13# ← A A← 12# 判断乘法是否结束 Y 重复执行n次 (A)=0? N HALT A ← (A)-1 乘数-1 12# ← A A ←13# 计算部分乘积 A← (A)+11# 算法流程 假设:(11)=被乘数 (12)=乘数n (13)=部分乘积 (14)=常数1(15)=常数0

  6. 8位数据线 5位地址线 控制线 地址译码器 ALU 被乘数 乘数 部分乘积 常数 常数 假设:(11)=被乘数7; (12)=乘数3 (13)=部分乘积 (14)=常数1(15)=常数0 乘法程序执行初态 LOAD15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 STORE 13 LOAD12 累加器 EQUAL15 程序代码区 HALT 算术逻辑部件 SUB 14 STORE12 LOAD13 ADD 11 JUMP1 控制命令 MUX 7 译码器 地址 3 MUX 数据 1 指令寄存器 指令计数器 0 M

  7. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 0#指令LOAD的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 0 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:取操作数 运算器 STORE 12 LOAD 13 Step4:装入A ADD 11 JUMP1 MUX Step5:指令地址+1 7 3 MUX 1 LOAD 15 0 0 指令寄存器 指令计数器 M

  8. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 1#指令STORE的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 0 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:准备地址 运算器 STORE 12 LOAD 13 Step4:保存(A) ADD 11 JUMP1 MUX Step5:指令地址+1 7 3 MUX 0 1 STORE 13 1 0 指令寄存器 指令计数器 M

  9. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 2#指令LOAD的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 3 0 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:取操作数 运算器 STORE 12 LOAD 13 Step4:装入A ADD 11 JUMP1 MUX Step5:指令地址+1 7 3 MUX 0 1 LOAD 12 2 0 指令寄存器 指令计数器 M

  10. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +2 常数 3#指令EQUAL的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 3 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:取操作数 运算器 STORE 12 LOAD 13 Step4:进行比较 3 0 ADD 11 JUMP1 MUX Step5:不相等,指令地址+2 7 3 MUX 0 1 EQUAL 15 3 0 指令寄存器 指令计数器 M

  11. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 5#指令SUB的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 2 3 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:取操作数 运算器 STORE 12 LOAD 13 Step4:减法操作 3 1 ADD 11 JUMP1 MUX Step5:指令地址+1 7 3 MUX 0 1 SUB 14 5 0 指令寄存器 指令计数器 M

  12. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 6#指令STORE的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 2 累加器A Step2:指令译码 EQUAL15 HALT SUB 14 Step3:准备地址 运算器 STORE 12 LOAD 13 Step4:保存(A) ADD 11 JUMP 1 MUX Step5:指令地址+1 7 3 2 MUX 0 1 STORE 12 6 0 指令寄存器 指令计数器 M

  13. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 7#指令LOAD的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 0 2 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:取操作数 运算器 STORE 12 LOAD 13 Step4:装入A ADD 11 JUMP 1 MUX Step5:指令地址+1 7 2 MUX 0 1 LOAD 13 7 0 指令寄存器 指令计数器 M

  14. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 8#指令ADD的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 7 0 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:取操作数 运算器 STORE 12 LOAD 13 Step4:加法操作 0 7 ADD 11 JUMP 1 MUX Step5:指令地址+1 7 3 MUX 0 1 ADD 11 8 0 指令寄存器 指令计数器 M

  15. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 常数 9#指令JUMP的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 7 EQUAL15 Step2:指令译码 HALT SUB 14 运算器 Step3:修改指令地址 STORE 12 LOAD 13 ADD 11 JUMP1 MUX 7 3 MUX 0 1 JUMP 1 1 9 0 指令寄存器 指令计数器 M

  16. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 1#指令STORE的第2次执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 7 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:准备地址 运算器 STORE 12 LOAD 13 Step4:保存(A) ADD 11 JUMP1 MUX Step5:指令地址+1 7 2 MUX 7 0 1 STORE 13 1 0 指令寄存器 指令计数器 M

  17. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 常数 1#指令STORE的第3次执行后 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 STORE 13 LOAD 12 累加器A 14 EQUAL15 HALT SUB 14 运算器 STORE 12 LOAD 13 ADD 11 JUMP1 MUX 7 1 MUX 14 1 STORE 13 2 0 指令寄存器 指令计数器 M

  18. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 常数 1#指令STORE的第4次执行后 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 STORE 13 LOAD 12 累加器A 21 EQUAL15 HALT SUB 14 运算器 STORE 12 LOAD 13 ADD 11 JUMP1 MUX 7 0 MUX 21 1 STORE 13 2 0 指令寄存器 指令计数器 M

  19. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 2#指令LOAD的第4次执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 21 0 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:取操作数 运算器 STORE 12 LOAD 13 Step4:装入(A) ADD 11 JUMP1 MUX Step5:指令地址+1 7 0 MUX 21 1 LOAD 12 2 0 指令寄存器 指令计数器 M

  20. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 +1 常数 3#指令EQUAL的第4次执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 0 Step2:指令译码 EQUAL15 HALT SUB 14 Step3:取操作数 运算器 STORE 12 LOAD 13 Step4:比较操作 0 0 ADD 11 JUMP1 MUX Step5:相等,指令地址+1 7 0 MUX 21 1 EQUAL 15 3 0 指令寄存器 指令计数器 M

  21. 地址译码器 ALU 被乘数 译码器 乘数 部分乘积 常数 常数 4#指令HALT的执行 LOAD 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Step1:取指令 STORE 13 LOAD 12 累加器A 0 Step2:指令译码 EQUAL15 HALT Step3:停止 SUB 14 运算器 STORE 12 LOAD 13 乘法程序执行完毕,13#存储单元中是计算结果 ADD 11 JUMP1 MUX 7 0 MUX 21 1 HALT 0 4 0 指令寄存器 指令计数器 M

  22. 复 习 思 考 题 • 什么情况下结果不正确,为什么? • 如何加快乘法的速度? • 如果是带符号整数,算法应如何修正? • 编制一个能完成整数除法运算的汇编程序。

More Related