4_基本汇编语言程序设计_第1页
4_基本汇编语言程序设计_第2页
4_基本汇编语言程序设计_第3页
4_基本汇编语言程序设计_第4页
4_基本汇编语言程序设计_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,封面,4章,基本汇编语言计算机编程,2,4章基本汇编语言计算机编程,第4章基本汇编语言计算机编程4.1顺序计算机编程4.2季度计算机编程4.3周期计算机编程4.4子程序设计4.4.1过程定义伪命令4.4.2子程序的参数传递4.4.3子程序的嵌套、迭代和再入4.4.4子程序的应用本章要点和练习分析,第4章,4,示例4.1,示例4.1:返回三个单词变量x,y,Z,得到三个总和,并将结果存储在单词变量W中。model small.startup.stackmovax,X. data add ax,y xdw 5 add ax,z ydw 6 mov w,ax zdw 7.exit 0 wdw?E

2、nd .代码,5,示例4.2/1,示例4.2包含64位数据,因此向左移动全部8位。6,示例4.2/2,model small . stack . data qvar dq 123456787654321h . code moval,Byte ptr qvar 6 mov Byte ptr qvar 7 Byte ptr qvar 5 mov Byte ptr qvar 6,al mov al (移动后)、返回第4章、8,4.2季度计算机编程、4.2季度计算机编程条件传输命令Jcc和无条件传输命令JMP用于实现程序的分支结构。 JMP不测试条件。Jcc可以按顺序执行后续命令,而无需迁移或发送到指

3、定位置,具体取决于条件是否成立。由于Jcc不支持条件表达式,并且基于当前标志位状态,因此Jcc必须提前对设置标志位(例如加法、比较、测试等)的指令进行排序。默认分支类型分为单分支和双分支。9、单个分支、1。根据单个分支类型、为同一问题选择的条件,单个分支结构的流程图中有两种茄子笔画方法,该程序中也有两种茄子编法。相当于在AX中计算有符号数字的绝对值。10,单个分支,CMP ax,0 jge noneg neg ax noneg 3360 mov result,ax,CMP ax,0(教材错误)jnge yes neg jmp done yes neg 33660流程图中分支的位置、12、双分支

4、、双分支示例:显示BX的最高位。Shl bx,1 JC one分支mov dl,0;第1季度jmp next;后续工作one : mov dl,1;第2季度next : movah,2;后续工作int 21h。分支程序中的其他问题一些双分支问题可以先假定一个茄子情况,将双分支更改为单分支问题。在上例中,假设BX的最高位为0,并且准备在分支外部显示0。如果最高位为0,则可以直接转到下一个操作。只有最高位为1时,才需要执行分支。movdl、0shlbx、1jnc next movdl、1next 3360 movah、2int 21h、13、多分支、分支嵌套多分支以及多种嵌套形式。范例1:寻找符号

5、函数1 X0 Y=0 X=0-1牙齿X0时,实际上是双分支的组合。14,多分支,示例2: AL确定你们的值,D0=1,转移到L0 D1=1,L1;虽然D2=1,迁移到L2,可以视为双分支的组合,但为了简化编程,实施左分支结构允许在数据段中使用传输地址表(例如4.4,15,多分支,示例4.4)实现多个分支。八个分支的标签分别为disp1,disp2在代码片段中为disp1:mov dx,disp2:mov设置disp1的偏移地址为2300h,disp2的偏移地址为2500h。数据段包括tabel dw disp1、disp2、16和多个分支(e)。季度:按输入的数字转入其他季度,以按输入的数字获

6、取季度与tabel的偏移。disp1为0,disp2为2。执行命令jmp tabelbx,设置bx=02 IP tabel bx,即IP 2500H CS:2500H设置为分支Disp2的入口,CPU运行分支DISP2,运行第4章,17,4.3循环计算机编程,4.3循环计算机编程(循环部分:)2.两个茄子循环结构1)“先循环,后判断”结构相当于高级语言“前”循环2)“先判断,后循环”结构相当于高级语言“堂型循环”,可实现零次循环。18,两个茄子循环结构,19,循环计算机编程,3。循环计算机编程编写周期程序的关键在于循环的控制。周期数已知:可用的LOOP命令,CX数。教材范例4.5。周期数和ZF

7、标志:可以使用LOOPZ、LOOPNZ命令。教材范例4.6。周期数未知:通常使用各种条件切换命令执行周期控制。例如,教材范例4.7,字串以0结尾。示例4.9,字符串以$结尾。20,范例分析,循环程序范例分析:范例4.5:计算100位数的总和。只控制周期数,知道周期数更简单。示例4.6:确定一个单词变量中1的最低位数。从最低位置到最高位置依次测试最多16次。测试1时,程序将退出,测试结果将反映为ZF标志,因此可以使用LOOPE或LOOPZ控制循环(结果将退出,而不是0牙齿)。示例4.7:将一个字符串中的所有大写字符更改为小写,字符串以0结尾。由于周期数未知,因此必须使用条件确定控制周期。循环结构应使用“先判后执”结构。通常,在使用条件判断控制循环时,使用“先判断,然后执行”的循环结构。21,示例4.6,示例4.6:确定一个单词变量中1的最低位数。startup mov ax、wordX测试目标发送AX mov cx,16。循环柜台初始值mov dl,-1;定位器位置初始值again:inc dl test ax,1 ror ax,1;循环命令不影响ZF loope again。CX0和ZF=1(测试位0),继续循环je notfound已终止循环,但设置了0标志。1mov bytey,dl jmp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论