您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 3_1 汇编语言基础 2011 final
第3章汇编语言基础3.1源程序结构3.2数据表示3.3变量应用源程序目标程序ReadablebyhumansReadablebyprocessorsMOVAL,1ADDAL,2MOVBL,AL101100000000000100000100000000103.1源程序结构3.1.1语句格式3.1.2程序格式3.1.3开发方法第3章汇编语言基础3.1.1语句格式程序由语句组成一个语句常占一行(MASM有续行符“\”)一个语句不超过132个字符,4个部分执行性语句:表达处理器指令(硬指令)说明性语句:控制汇编方式(伪指令)标号:硬指令助记符目的操作数,源操作数;注释NEXT:MOVAL,23H;立即数23H送AL累加器名字伪指令助记符参数,参数,参数;注释tabledb18h,95h,0bh;定义表数据标号和名字是用户自定义的标识符3.1.1语句格式执行性语句:说明性语句:3.1.1语句格式—标识符最多由31个字母、数字及规定的特殊符号(_、$、?、@)组成,不能以数字开头一个源程序中,用户定义的每个标识符必须唯一不能是汇编程序采用的保留字保留字:编程语言本身需要使用的各种具有特定含义的标识符(关键字)硬指令助记符MOV伪指令助记符DB操作符OFFSET寄存器名EAX预定义符号@data取名原则类似高级语言,但不区别大小写字母标号:硬指令助记符目的操作数,源操作数;注释名字伪指令助记符参数,参数,参数;注释NEXT:MOVAL,23H;立即数23H送AL累加器tabledb18h,95h,0bh;定义表数据3.1.1语句格式DATASEGMENT;定义数据段…….;数据定义(待填)DATAENDSCODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATA;段寄存器约定START:MOVAX,DATA;程序执行起始MOVDS,AX……;主程序(待填)……MOVAH,4CH;程序执行结束,返回DOSINT21H……;子程序(待填)CODEENDSENDSTART;汇编结束3.1.2程序格式—完整段定义格式.modelsmall;定义程序的存储模式.486;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式3.1.2程序格式—逻辑段的简化定义堆栈段定义伪指令.STACK创建一个堆栈段段名:STACK,可用@STACK预定义操作符表示默认为1KB空间数据段定义伪指令.DATA创建一个数据段段名:_DATA,可用@DATA预定义操作符表示代码段定义伪指令.CODE创建一个代码段默认段名:_TEXT,可用@CODE预定义操作符表示.modelsmall;定义程序的存储模式.486;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式3.1.2程序格式—程序执行的开始指明程序开始执行的位置.startup同时使DS等于用.DATA定义的数据段地址可用两条语句代替start:movax,datamovds,ax标号START用于指明程序开始执行的位置MASM汇编程序•设置CS和IP,SS和SP•没有设置DS、ES、FS、GS.modelsmall;定义程序的存储模式.486;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式3.1.2程序格式—源程序的汇编结束翻译源程序成目标模块的过程到此结束源程序的最后必须有一条END语句汇编程序不处理END指令之后的任何内容END伪指令后面可以有一个“标号”参数endstart指定程序开始执行于该标号所指示的指令执行结束≠汇编结束.modelsmall;定义程序的存储模式.486;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式3.1.2程序格式—程序执行的终止应用程序终止执行,将控制权交还操作系统.exit利用4CH号DOS功能调用实现movah,4chint21h功能编号AH=4CH入口参数AL=DOS返回码功能说明结束程序执行,返回DOS3.1.2程序格式—DOS功能调用MS-DOS操作系统提供给程序员的子程序调用子程序步骤(类似高级语言调用函数)在AH寄存器中设置系统功能调用号在指定寄存器中设置入口参数中断调用指令“INT21H”执行功能根据出口参数分析功能调用执行情况各种功能见附录B3.1.2程序格式—字符串显示功能调用主存的字符串以“$”作为结尾符功能编号AH=09H入口参数DS∶DX=欲显示的字符串逻辑地址(段地址∶偏移地址)功能说明将指定的字符串在当前光标位置开始显示;字符串可以是任何长度;可以包含控制字符(如回车0DH,换行0AH);必须以“$”(ASCII码为24H)字符结尾。3.1.2程序格式—信息显示程序在数据段给出字符串形式的信息msgdb'Hello,Assembly!',13,10,'$';定义要显示的字符串在代码段编写显示字符串的程序movdx,offsetmsg;指定字符串在数据段的偏移地址movah,9int21h;利用功能调用显示信息DATASEGMENT;定义数据段msgdb'Hello,Assembly!',13,10,'$’;数据定义(待填)DATAENDSCODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATA;段寄存器约定START:MOVAX,DATA;程序执行起始MOVDS,AXmovdx,offsetmsg;主程序(待填)movah,9int21hMOVAH,4CH;程序执行结束,返回DOSINT21HCODEENDSENDSTART;汇编结束3.1.2程序格式—完整段定义格式3.1.2程序格式—信息显示程序操作3.1.2程序格式—信息显示程序3.1.2程序格式—信息显示程序.modelsmall;定义程序的存储模式.386;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式作业仿照例题3-1编写源程序:利用DOS功能调用的02H号功能,实现在屏幕当前光标位置显示一个字符‘A’。
本文标题:3_1 汇编语言基础 2011 final
链接地址:https://www.777doc.com/doc-3229617 .html