问题求解 计算机 开始 能够精 实现阶段 确识别 的语言 问题理解和定义 将自然语言描述的“算法” 算法 。一“翻译”成。 程序 计算机语言描述的“程序”的过程 手工测试和检查 人可识 测试 别和使 用的自 然语言 设计阶段
问题求解 开始 问题理解和定义 算法 手工测试和检查 设计阶段 人可识 别和使 用的自 然语言 程序 测试 实现阶段 计算机 能够精 确识别 的语言 将自然语言描述的“算法” “翻译”成 计算机语言描述的“程序”的过程
请思考以下问题 ·在任何时候,编程之前必须先完成算法设计 ·Why? ·计算机能够识别和处理的“语言”,不仅仅是C、C+等,也可以 是自己定义的语言 ·For example? ·程序运行出错,涉及到哪些内容? ·在“翻译”之前,尽量排除算法错误
请思考以下问题 • 在任何时候,编程之前必须先完成算法设计 • Why? • 计算机能够识别和处理的“语言”,不仅仅是C、C++等,也可以 是自己定义的语言 • For example? • 程序运行出错,涉及到哪些内容? • 在“翻译”之前,尽量排除算法错误
40年代的编程: Before the middle of the 1940s, computer operators "hardwired" their programs
40年代的编程: Before the middle of the 1940s, computer operators “hardwired” their programs
而后,二进制代码 显然,hardwired program不易修改,set switches 不能算是编码! 0010001000000100 如何让计算机的执行做到:programmable? 0010010000000100 A big problem! 0001011001000010 0011011000000011 Big idea: l,计算机提供基本的hardwired“原子操作” 1111000000100101 2,提供编码方式,支持程序员组合“原子操 0000000000000101 作”,编写“程序” 0000000000000110 3,将“程序”存放在存储空间中 0000000000000000 4,计算机“解读”程序编码,执行原子操作
而后,二进制代码 显然,hardwired program不易修改,set switches 不能算是编码! 如何让计算机的执行做到:programmable? A big problem! Big idea: 1,计算机提供基本的hardwired“原子操作” 2,提供编码方式,支持程序员组合“原子操 作”,编写“程序” 3,将“程序”存放在存储空间中 4,计算机“解读”程序编码,执行原子操作
例如: ·0010:操作码,将”某个”内存中的数据 复制到”某个"寄存器中 QQ.1.0001000000100 0010010000000100 ·001:001号寄存器 0001011001000010 ·第一个操作数 0011011000000011 ·000000100:地址偏移量,4 1111000000100101 ·第二个操作数:从下一条指令所存储的 地址向后偏移4个16位,取值5 0000000000000101 0000000000000110 执行效果:将5赋值给1号寄存器 0000000000000000
例如: • 0010: 操作码,将”某个”内存中的数据 复制到”某个”寄存器中 • 001: 001号寄存器 • 第一个操作数 • 000000100:地址偏移量,4 • 第二个操作数:从下一条指令所存储的 地址向后偏移4个16位,取值5 执行效果:将5赋值给1号寄存器
以汇编指令为表示的机器级操纵指令 ·用机器语言编写程序,并记录在纸带或卡片上 输入:按钮、开关; 所有信息都 输出:指示灯等 是0/1序列1 假设:0010-jxx 穿孔表示0,未穿孔表示1 0:01010110 1:00100100 07(1J)22-1D4设EpTJ:4200R110:25T2,01463(2,)0 2: ●●●●● 3: ●●0●0● 太原始了,无法忍受,咋办? 4: 01100111 5: 21111112 10111 用符号表示而不用0/1表示! 6: 144a14141:4:I4440491t4144144944114444h4444444 若在第4条指令前加入指令,则 541s151553s1511531555555555555551551515515515555555i 5S656186E1656568685456655666566631661CA1C664564686886E656L058686M6 需重新计算地址码(如jxx的目 7111717177月177111711111917117111111912177117721011717771112111 标地址),然后重新打孔。 1ol111Al731111 不灵活!书写、阅读困难! 2022年1 10 11
• 用机器语言编写程序,并记录在纸带或卡片上 2022年12月14日 引言 10 以汇编指令为表示的机器级操纵指令 穿孔表示0,未穿孔表示1 0:0101 0110 1:0010 0100 2: …… 3: …… 4: 0110 0111 5: …… 6: …… 假设:0010-jxx 若在第4条指令前加入指令,则 需重新计算地址码(如jxx的目 标地址),然后重新打孔。 不灵活!书写、阅读困难! 太原始了,无法忍受,咋办? 用符号表示而不用0/1表示! 输入:按钮、开关; 输出:指示灯等 所有信息都 是0/1序列!