计算机硬件第4章-汇编程序设计2.ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CopyRight2006 第四章 汇编语言程序设计 一、程序设计的基本过程 (1)建立数学模型 (2)确定算法 (3)画出框图(流程图) (4)分配内存/REG (5)编程 (6)检查(静态) (7)上机调试、修改,最后检测通过 二、编程考虑 注意结构合理 合理选用代码段、数据段、堆栈段和附加段,确定数据段中的原始数据区和工作单元。 充分利用M/R资源 程序结构尽可能简单、清楚,选用执行速度快、占用内存少的指令,合理使用寄存器,尽量使操作在寄存器之间进行,减少访问内存的次数。 符合软件开发的一般原则 提高源程序的可读性和可维护性,必要时应提供简明的注释。 三、程序基本结构 顺序结构 分支结构 循环结构 4.4.2 顺序结构程序设计 没有分支、循环等转移指令的程序,会按指令书写的前后顺利依次执行,这就是顺序程序。 顺序结构是最基本的程序结构。 完全采用顺序结构编写的程序并不多见。 设计方法:注意前后指令的衔接关系,前面的指令要为后面的指令准备好所有有关的操作数。 顺序结构 常见的几种操作: 寄存器/段寄存器的初始化 查表 串操作 多字节乘法运算 …… 例4.3 顺序结构 内存中自TABLE开始的16个单元连续存放着0~15的平方值(称为平方表)。任给一数X(0≤X≤15)在XX单元,查表求X的平方值,并把结果存入YY单元。 程序如下: DATA SEGMENT TABLE DB 0,1,4,9,16,25,36,49,64; DB 81,100,121,144,169,196,225 ;定义平方表 XX DB 6 YY DB ? DATA ENDS STACK SEGMENT PARA STACK ‘STACK ’ DB 100 DUP(?) ;定义100个字节堆栈空间 STACK ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA, SS:STACK START PROC FAR PUSH DS MOV AX, 0 ;标准序(保存PSP中INT 20H地址) PUSH AX MOV AX, DATA ;或 MOV AX, SEG TABLE MOV DS, AX ;置数据段寄存器 MOV BX, OFFSET TABLE ;置数据指针 * MOV AH, 0 MOV AL, XX ;取待查数 * ADD BX, AX ;查表 * MOV AL, [BX] ;或*XLAT 或XLAT TABLE MOV YY, AL ;平方数存YY单元 RET START ENDP CODE ENDS END START 例4.4 顺序结构 将数据段中起始偏移地址为0000H的一串字节数据传送到起始偏移地址为1000H的存储单元。 CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV SI,OFFSET SORC MOV DI,OFFSET DEST MOV CX,COUNT CLD REP MOVSB MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START 例4.4 顺序结构 两个32位无符号数相乘 4.4.3 分支程序设计 分支程序根据条件是真或假决定执行与否 判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志 转移指令Jcc和JMP可以实现分支控制 分支结构有 单分支结构 双分支结构 多分支结构 单/双分支结构 分支程序的设计方法 关键:如何判断分支的条件。 1. 条件的建立方法: (1)当特征状态(正/负、零/非零、偶/奇)作为条件时, 则指令: AND AL, AL 或 OR AL, AL 或 CMP AL, 0 1. 条件的建立方法: (2)当某一位为0/1作为条件时,建立条件的方法有两种: 用TEST指令 TEST reg,N 只有与欲测位i相应的位为“1”,其余位均为“0”。 用移位指令将待测位移到进位位CF去,当检测reg的位i时,建立条件序列为: MOV CL,i+1 或 MOV CL,8-i SHR reg,C

文档评论(0)

kbook + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档