预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共68页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第3章第3章汇编语言程序设计编辑汇编语言的语句格式完整的汇编语言源程序由段组成 一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列 需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点 所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内 通常,程序还需要一个堆栈段程序开始应用程序执行结束,应该将控制权交还操作系统 汇编语言程序设计中,有多种返回DOS的方法,但一般利用DOS功能调用的4CH子功能实现,它需要的入口参数是AL=返回数码(通常用0表示程序没有错误) 于是,应用程序的终止代码就是: movax,4c00h int21h汇编结束伪指令1.段定义伪指令段名segment[定位类型][组合类型] [段长类型][‘类别’] ...;语句序列 段名ends定位类型组合类型段长类型与‘类别’GROUP段组定义3.数据定义伪指令数据定义举例(1)数据定义举例(2)数据定义举例(3)数据定义举例(4)数据定义举例(5)4.符号定义伪指令表达式:常数、寄存器、标号、变量与一些运算符相组合的序列。 包括:数值表达式,地址表达式。 五种:算术运算符、逻辑运算符、关系运算符、综合运算符 (1)算术运算符:用于完成算术运算,有+(加法)、-(减法)、×(乘法)、/(除法)、MOD(求余)、SHL(左移)、SHR(右移)共7种运算。 如: MOVAL,3*5+3(AL)=12H MOVAL,BLSHR1(AL)=01101100B (2)逻辑运算符:对其操作数进行按位操作。逻辑运算符有AND(与)、OR(或)、XOR(异或)和NOT(非)。(4)表达式—分析运算符(4)表达式—分析运算符(5)综合运算符:可以用来建立和临时改变变量或标号的类型以及存储器操作数的存储单元类型,而忽略当前的属性,所以又称为属性修改运算符。有6个综合运算符:PTR、label、SHORT、THIS、HIGH和LOW。在程序设计中,经常将一些重复出现的语句组定义为子程序。子程序又称为过程,可以采用CALL指令来调用。 过程定义格式: 过程名PROC[NEAR]/FAR …;其它指令系列 RET;返回指令 过程名ENDP 调用一个过程的格式为: CALL过程名4子程序调用指令1段内直接调用2段内间接调用3段间直接调用4段间间接调用例6.3十六进制转换为ASCII码的子程序汇编语言程序设计一般有以下几个步骤: 1.分析问题,抽象出描述问题的数学模型 2.确定解决问题的算法或解题思想 3.绘制流程图和结构图 4.分配存储空间和工作单元 5.编制程序 6.程序静态检查 7.上机调试 所谓结构化程序设计是指程序的设计、编写和测试都采用一种规定的组织形式进行,而不是想怎么写就怎么写。这样,可使编制的程序结构清晰,易于读懂,易于调试和修改,充分显示出模块化程序设计的优点。 在20世纪70年代初,由Boehm和Jacobi提出并证明的结构定理:即任何程序都可以由3种基本结构程序构成结构化程序,这3种结构是:顺序结构、分支(条件选择)结构和循环结构。每一个结构只有一个入口和一个出口,3种结构的任意组合和嵌套就构成了结构化的程序。程序流程图 JGLARGER CMPAX,MIN JLSMALL JMPGOOD LARGER:MOVMAX,AX JMPGOOD SMALL:MOVMIN,AX GOOD:LOOPNEXT HLT多重循环程序设计数 108169032 第一遍10 16 90328 第二遍16 90 32108 第三遍90 32 16108DATASEGMENT BUFDW3,-4,6,7,9, 2,0,-8,-9,-10,20 N=($-BUF)/2 DATAENDS STACKSEGNMENTSTACK DB200DUP(0) STACKENDS CODESEGMENT ASSUMECS:CODE, DS:DATA,SS:STACK 程序运行后,BUF区中的内容如下: 20,9,7,6,3,2,0,-4,-8,-9,-10 若要对N个无符号数按由大到小的顺序排列,只需将指令“JGEL”改为“JAEL”即可。什么是系统功能调用图1.5存储空间的分配DOS功能调用INT21H 功能号:AH=01H 出口参数:AL=字符的ASCII码 功能:获得按键的ASCII代码值,并显示 调用此功能时,若无键按下,则会一直等待,直到按键后才读取该键值getkey: movah,01h;功能号: ah←01h int21h;功能调用 cmpal,’Y’;处理出口 参数al jeyeskey;是“Y” cmpal,’N’ jenokey ;是“N” jnegetkey ... yeske