网站大量收购独家精品文档,联系QQ:2885784924

计算机系统I-第7章ppt课件.pptx

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机系统 I ;计算机的代码是由‘0’,‘1’组成 … 0001110010000110 程序员使用机器语言编程非常困难,采用助记符号的形式来表示每条指令将会更好…,和机器码的转换也比较容易 ADD R6,R2,R6 ; increment index reg. ;汇编器(Assembler)是将符号语言翻译成机器指令的程序。 汇编器是和机器的ISA是相关的:符号与指令集定义的指令保持相应的一致性 用容易记忆的符号表示操作码 内存的位置用标号表示 为存储分配和数据的初始化提供额外的操作支持 ;; ; Program to multiply a number by the constant 6 ; .ORIG x3050 LD R1, SIX LD R2, NUMBER AND R3, R3, #0 ; Clear R3. It will ; contain the product. ; The inner loop ; AGAIN ADD R3, R3, R2 ADD R1, R1, #-1 ; R1 keeps track of BRp AGAIN ; the iteration. ; HALT ; NUMBER .BLKW 1 SIX .FILL x0006 ; .END;程序代码的组成: 可执行的机器指令 伪操作指令(传递给编译器指导汇编工作,不可执行) 注释 符号之间加入空格 ,不区分字母的大小写 注释 (“;”开始),汇编器将忽略所有的注释 指令格式:标号 操作码 操作数 ;注释 ;操作码 和LC-3指令集定义的操作码对应的助记符号,不能再用作标号,系统专用并保留 具体参见Appendix A ex: ADD, AND, LD, LDR, … 操作数 寄存器数– 寄存器 Rn, n是寄存器编号 立即数 – 数字用 # (十进制) or x (十六进制)表示 内存数 – 标号,用符号表示的内存地址 用‘,’分割操作数 数字, 操作数的顺序以及类型和遵守机器码指令的定义; ADD R1,R1,R3 ADD R1,R1,#3 LD R6,NUMBER BRz LOOP ;LC-3 只有两种基本数据类型 定点整数: Integer 16位补码 字符: Character 16位 都占用 16 bits wide (a word) 但实际字符只占用8 bit, 怎么存储? 高位零扩展;标号:Label 放在每行代码的开始的地址符号,表示该行代码或数据的地址, 符号化的内存地址. 一般两种类型: 分支和跳转语句的目标地址 数据的存放地址 ex: LOOP ADD R1,R1,#-1 BRp LOOP ex: LD R2, NUMBER … … NUMBER .BLKW 1 ;注释:Comment ‘;’之后的所有字符都是注释 汇编器将忽略所有的注释 注释用于帮助程序员理解程序和存档的需求 注释的技巧 不要滥用注释, 比如 ???R1加1”,没有提供比指令更多的信息 提供更深的洞察力, 比如 “指针加1指向下一个访问的数据” 分隔代码片段 ;伪操作 不对程序产生效果,不是执行指令 仅供汇编器使用 区别于指令,以‘.’ 开始;告诉编译器代码在内存中的起始地址 一个程序只允许一个 .ORIG伪操作 PC 在程序载入时初始化为.ORIG指向的地址 Example: .ORIG x3000 LC-3的用户程序的起始地址一般设置为 x3000 LC-3:内存分配 x0000 ? x00FF :TRAP向量表 x0100 ? x01FF 中断向量表 x0200 ? x2FFF 系统STACK x3000 ? xFDFF 用户程序区域 xFE00 ? xFFFF 设备寄存器 ;在内存中定义并初始化程序变量,可读写 一个程序行只允许一个定义 定义变量的大小总是16位的字 ;用于内存单元的分配,适用操作数一开始不确定的场合 ; 保留3个未命名的内存单元 .BLKW 3 ; 保留1个命名的内存单元 Bob .BLKW 1 ; 保留7个命名的内存单元并全部 ; 初始化为4 num .BLKW 7 #4;在内存中定义1串字符串 在内存中连续存放 自动以‘\0’结束 哨兵: “Null-terminated” 每个字符高位0扩展,占用16位 Example: hello: .STRINGZ “Hello!” 访问: LEA R0, hello PUTS;告诉编译器程序结束的地点 一个程序只允许一个.END 编译器在此停止编译,但不真正停止程序;int a;

文档评论(0)

智慧屋 + 关注
实名认证
内容提供者

智慧屋

1亿VIP精品文档

相关文档