第4章汇编语言程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言的优势 1.用汇编语言编写的程序一般比用高级语言编写的程序执行得快,且所占内存较少。 2.汇编语言程序能够直接有效地利用机器硬件资源。 3.学习汇编语言对于理解和掌握计算机硬件组成及工作原理是十分重要的。 4.1.2 汇编语言源程序的结构 (Program Structure) 3.关系运算符 关系运算符包括六种: EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、 GE(大于或等于) **** 关系运算符的两个操作数,可以是数字或者同一段的存储器地址。 ****关系运算结果只有两个——真、假。 如果关系是真,则结果为 0FFH(0FFFFH); 如果关系是假,则结果为0。 汇编程序如下: DATA SEGMENT NUM DW 6F78H STRING DB 16 DUP(?) DATA ENDS ; CODE SEGMENT ASSUME CS:CODE,DS:DATA BINCA PROC FAR BEGIN: MOV AX,DATA MOV DS,AX MOV ES,AX CLD LEA DI,STRING MOV CX,LENGTH STRING ;串的长度 MOV AL,30H REP STOSB ;串中全部填充为‘0’ MOV CX,LENGTH STRING ;串的长度 LEA DI,STRING MOV AL,’1’ MOV BX,NUM ;(BX)=6F78H AGAIN: RCL BX,1 ;含进位位循环左移 JNC NEXT ;若为0,转NEXT MOV [DI],AL ;若为1,对应位送入’1’ NEXT: INC DI LOOP AGAIN 本章作业 【例4-10】二进制串转换为ASCII码: 一个二进制位串若要送出显示或打印, 需要把串中每一位化为ASCII码。 内存变量NUM中的16位二进制数,转换为ASCII码,存入串变量STRING中。 (P129例4-6) 思路:先将目标串全部预置为30H,再把每个二进制位逐位左移至CF,然后判CF=0? 若是,取下一位;若不是,将31H送此单元。 流程图如下: 初始化 用’0’填满串 取要转换的数 左移1位 存入‘1’ 结束 CF=1? 转换完? 调整指针 N N MOV AH,4CH INT 21H BINCA ENDP CODE ENDS END BEGIN 使用简化格式的程序 NAME 两字相加操作; .MODEL SMALL .STACK 100 ;定义堆栈(默认堆栈段尺寸是1024B) .DATA ;定义数据段 DATA1 DW 1234H DATA2 DW 5678H DATA3 DW (?) .CODE START: MOV AX,@DATA ;数据段隐含段名为@DATA MOV DS,AX ;初始化DS MOV AX,DATA1 ;取被加数 ADD AX,DATA2 ;两数相加 MOV DATA3,AX ;和DATA3单元中 HLT END START 4.3.4 过程定义语句(p.112) 过程即是子程序。把具有一定功能的程序段设计成为一个过程(子程序),便于实现模块化的程序设计。过程可以用CALL指令来调用。 定义格式:过程名 PROC NEAR/FAR RET 过程名 ENDP … 可调用的过程的类型属性有两种: NEAR近过程。该过程与调用指令CALL处在同一个代码段中(段名相同),调用时首先把当前IP值压入堆栈,而后执行子程序,当子程序执行完后,利用RET指令将堆栈中保护的IP值弹出IP寄存器,完成一次近程调用过程。。 FAR 远过程。该过程与调用指令CALL处在不同的代码段中(段名不同),调用时先把CS压入堆栈,再把IP压入堆栈。尔后执行子程序

文档评论(0)

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

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

版权声明书
用户编号:8134116003000000

1亿VIP精品文档

相关文档