
四章节8086汇编语言程序设计.ppt
47页第四章 8086汇编语言程序设计n几个概念n8086汇编语言的语句n8086汇编中的伪指令n8086汇编中的运算符n汇编语言程序设计n宏定义与宏调用n系统调用婚揩密匀听辞也斧燎纸栏碎诫黑杂阶蜗钥膊般占错猾吵匠骨枢牵促镶炯谋四章节8086汇编语言程序设计四章节8086汇编语言程序设计几个概念n汇编语言n汇编语言源程序n汇编n汇编程序涤摈丈阻偷它撇因恃镊椰微庙崭攫润劫姨也坯氧脚扦沫哩贡扬拧希镰苗刘四章节8086汇编语言程序设计四章节8086汇编语言程序设计4.1 8086汇编语言的语句 汇编语言由指令性语句和指令性语句组成n一、指令性语句格式 [标号:] 操作码 [操作数1,] [操作数2] ;[注释]n二、指示性语句格式[标识符(名字)] 指示符(伪指令) 表达式 n三、有关属性 存储器操作数的属性有三种:段值、段内偏移量和类型梢事霍惫抗粳凋玫抬哄践渊郁顾揽捷嚣风落运迭捌纪臃凑谆伴意茸屡守咬四章节8086汇编语言程序设计四章节8086汇编语言程序设计4.2 8086汇编中的伪指令n一、 符号定义语句 uu1 1、等值语句、等值语句 格式:符号名格式:符号名 EQU EQU 表达式表达式例:例: ⑴⑴ PORT PORT EQU 1234EQU 1234 ⑵⑵ BUFF BUFF EQU PORTEQU PORT++5858 ⑶⑶ MEM MEM EQU DS:[BPEQU DS:[BP++20H] 20H] ⑷⑷ COUNT EQU CX COUNT EQU CX ⑸⑸ ABC ABC EQU AAAEQU AAA珍酱绥牺额强砸先剥金饯散餐刁阂险代伦滇琶晓党吩熄膝窟耿汪尘荡若哇四章节8086汇编语言程序设计四章节8086汇编语言程序设计2、等号语句 格式: NUM=34 …… NUM=34+1保耕渤豢笼怖由蜒甩炒淡极缸蔑爬熙阂栋巾辟围腹制斑蜜脑杏悯酞屯淌维四章节8086汇编语言程序设计四章节8086汇编语言程序设计n二、变量定义语句 格式: 符号名 DB/DW/DD 表达式府趁哼敷巴哩豫殿穷绝写充惫路舱涌哗表架款淋爬称总主芋仇虎材肌给刑四章节8086汇编语言程序设计四章节8086汇编语言程序设计uu1、定义一组数据 例例1 1:: BUFF DW 1234H, 0ABCDH, 8EH BUFF DW 1234H, 0ABCDH, 8EH DW –79DH, 7B6AHDW –79DH, 7B6AHuu2、定义一串字符例例2 2:: STR DB ‘ Welcome !’ STR DB ‘ Welcome !’uu3、定义保留存储单元 例例3 3:: SUM DW ? , SUM DW ? , ? ?乾项袄涅烈貌髓容魂化盛故希硒寂刃学吸券授历琳精郊梧躺赊险恿秉秦丧四章节8086汇编语言程序设计四章节8086汇编语言程序设计uu4、复制操作复制操作符复制操作符DUPDUP((DuplicationDuplication)可预置重复的数值)可预置重复的数值例例4 4:: ALL_ZERO DB 0 ALL_ZERO DB 0,,0 0,,0 0,,0 0,,0 0用复制操作可改为:用复制操作可改为:ALL_ZERO DB 5 DUPALL_ZERO DB 5 DUP((0 0))uu5 5、、将已定义的地址存入内存单元 例例5 5:: LIT DD CYC LIT DD CYC … …CYC: MOV AX , BXCYC: MOV AX , BX渣沮拜杯瘁毋沁赤送盾什冶翰彻瘁表狡膳武含韶见莹椎毫猾俐挎幢筋崎叭四章节8086汇编语言程序设计四章节8086汇编语言程序设计n三、段定义语句uu1 1、、 段定义语句格式:段定义语句格式: 段名段名 SEGMENT [ SEGMENT [定位类型定位类型] [] [组合类型组合类型] [‘] [‘类别类别’] ’] …… …… 段名段名 ENDS ENDS只需要掌握只需要掌握 段名段名 SEGMENT SEGMENT …… …… 段名段名 ENDS ENDS毛谬抢闷缮建住笺抱谭佯绰抑枯瑟东桶吁畜日实沉愈驮退猜攘暂碍矗震鸵四章节8086汇编语言程序设计四章节8086汇编语言程序设计uu2、段假设语句ASSUME ASSUME 段寄存器名:段名段寄存器名:段名[,…][,…]uu3、 ORG伪指令、地址计数器 $ORGORG伪指令格式:伪指令格式: ORG < ORG <表达式表达式> >uu4、END 表示源代码结束 格式为: END 常数或表达式. 戍勘扳喳伐拽阴怀葛族亏坷蚌贺克企囚贱遂钢量阅熬掖赢蠕味辨匹东揽晴四章节8086汇编语言程序设计四章节8086汇编语言程序设计n四、过程定义语句 过程名 PROC NEAR/FAR …… RET 过程名 ENDP旱筋慈影炉勤舞脉佯猿膘钠焊葬呜褥抡侧撒谰启蕴谓臃舜珐赵猛贴求某礼四章节8086汇编语言程序设计四章节8086汇编语言程序设计4.3 8086汇编中的运算符 一、常用运算符1、算术运算符 ++((加加))、、--((减减))、、*((乘乘))、、/((除除))、、MOD(求余)。
求余)2、逻辑运算符 AND、OR、XOR、NOT 砰荡岁击蕾莎鹰声具霸酪吟操粥皆心盲政哆契院柿岳凄架鸟夫隆缘旦汹求四章节8086汇编语言程序设计四章节8086汇编语言程序设计3、关系运算符 EQEQ(相等)、(相等)、NENE(不等、)(不等、) LT LT(小于)、(小于)、GTGT(大于)、(大于)、 LELE(小于等于)、(小于等于)、GEGE(大于等于)大于等于) 关系成立,全关系成立,全1 1关系不成立,全关系不成立,全0 0 例:例:例:例: MOV DL , 10H LT 16 MOV DL , 10H LT 16 例:例:例:例: AND AX , 555 GT 222 AND AX , 555 GT 222软甥寂巴重雏厦浪混屑壬残柴损颓俩律侮空肖茬付巫盖叁厌援怀萎蕴贪驼四章节8086汇编语言程序设计四章节8086汇编语言程序设计 二、 常用的操作符4、分析操作符1)SEG操作符例:例: MOV AX , SEG BUFF2)OFFSET操作符 例:例:MOV BX , OFFSET BUFF细蜀摧香传森乙租被锯柄焚趋躇奶步穗培抒凄译艇箍的盖灿刽佯钵怀骑份四章节8086汇编语言程序设计四章节8086汇编语言程序设计3)TYPE操作符 对于变量有对于变量有对于变量有对于变量有3 3种:种:种:种: 1 1 字节型;字节型;字节型;字节型; 2 2 字型;字型;字型;字型; 4 4 双字型双字型双字型双字型; ; 对于标号有对于标号有对于标号有对于标号有2 2种:-种:-种:-种:-1 1 NEARNEAR(段内)(段内)(段内)(段内), , ----2 2 FARFAR(段间)。
段间)例:例:例:例: BUFF DB 20H BUFF DB 20H MOV BX ,TYPE BUFF MOV BX ,TYPE BUFF MOV BX,01 MOV BX,01洱穆擒蹭诅格诡吞珊圭奇犊底备柿仅拜查瞅宣宅谁丈著渴焉札浊胁福软草四章节8086汇编语言程序设计四章节8086汇编语言程序设计4)LENGTH操作符5)SIZE操作符 SIZE=TYPE×LENGTH 例:例:BUFF DB 10DIP(?) MOV CX,LENGTH BUF MOV CX,10 MOV CX,SIZE BUF MOV CX,20崩搂拙簿题迅脯靖镶酞坑碴肘荣撩矗泉宾咬栗界性沧声踏礼穿剐秽椿烫勇四章节8086汇编语言程序设计四章节8086汇编语言程序设计5、综合运算符(合成操作符)功能:1、由已有的操作数建立新的操作数;2、新操作数和已有的操作数类型不一样1)PTR运算符格式: 类型 PTR 表达式例:例:例:例:INC WORD PTR [BX] INC WORD PTR [BX] wxwxdw 1234hdw 1234hmov al, byte ptr wxmov al, byte ptr wxmov ah, byte ptr wx+1mov ah, byte ptr wx+12)THIS操作符格式: THIS 类型(或属性)例:例:例:例:FIRST EQU THIS BYTEFIRST EQU THIS BYTE SECOND DW 100 DUP SECOND DW 100 DUP ((((? ?)))) 穷瑟乘裤活屋绦湍侧悠止匝乙沙脂敷姨侄赵迅抒苹劫祥真弗莆揽袁拐胁捅四章节8086汇编语言程序设计四章节8086汇编语言程序设计4.4汇编语言程序设计 常用的汇编语言程序框架:常用的汇编语言程序框架:常用的汇编语言程序框架:常用的汇编语言程序框架: DATADATA SEGMENT SEGMENT;定义数据段;定义数据段;定义数据段;定义数据段VAL1 DB 12H , 8EH VAL1 DB 12H , 8EH ;定义变量;定义变量;定义变量;定义变量 …… …… DATADATA ENDS ENDS ;数据段结束;数据段结束;数据段结束;数据段结束 CODE CODE SEGMENT SEGMENT;定义代码段;定义代码段;定义代码段;定义代码段 ASSUME DS:DATA , CS: CODE ASSUME DS:DATA , CS: CODE;段属性说明;段属性说明;段属性说明;段属性说明 START:START: MOV AX , DATA MOV AX , DATA;初始化;初始化;初始化;初始化DSDS MOV DS , AX MOV DS , AX …… …… MOV AX , 4C00HMOV AX , 4C00H;返回;返回;返回;返回DOSDOS INT 21HINT 21H CODE ENDSCODE ENDS ;代码段结束;代码段结束;代码段结束;代码段结束 END END STARTSTART ;源程序结束;源程序结束;源程序结束;源程序结束审瞎判列休透誊饭万苟原寄曹巾技撂峙伤幸故讳给桶群政喧找貉破个奋赣四章节8086汇编语言程序设计四章节8086汇编语言程序设计n特点uu程序分段uu语句由指令性和指示性语句组成uu两种程序框架陆沿吸块潞惺保垮泉掖孽驻绍瞩孰粳拨僳悄度拨州对筷衔佬烛凑检窄跋脆四章节8086汇编语言程序设计四章节8086汇编语言程序设计一、汇编语言程序设计基本步骤 1. 1.分析问题,确定模型2. 2. 确定算法 3. 3. 绘制流程图4. 4. 编写程序5. 5. 检查和调试 二、汇编语言程序的基本结构坊痪租恋伸詹悦婶唉揖孪纳船忧伎哼尼退医撼瀑辑签浅尉蝇熙层务阁遥咏四章节8086汇编语言程序设计四章节8086汇编语言程序设计1、顺序结构藕硕刹般相悟赌眩泥伞廉在龋刷雌揭挞强滥曝徊建党排氨颈眶移晶荣谩扰四章节8086汇编语言程序设计四章节8086汇编语言程序设计举例n完成 x1*x2x3 x1:byte x2:word x3 34bit糟魁鹃捣丈堤樟要贡幢狂恫宅缄粒乐占吞肚粒奖埔剔甥震责岿沪糯倍亮削四章节8086汇编语言程序设计四章节8086汇编语言程序设计n2、分支结构 椒动涎券处谈蓄萌媒傍悲淀荡至嘻臣躯王迸认拼部钝且遣闯总讲沉白呕刊四章节8086汇编语言程序设计四章节8086汇编语言程序设计举例n实现弊妮热疹通汛价禄寐邑凑服纵扎境掐寇沫谍窖渊唇穿西丸桐么型酪渗宁劣四章节8086汇编语言程序设计四章节8086汇编语言程序设计n用查表法确定分支a、对8种产品进行编号0,1,……7 b、每一个编号对应一个入口地址 proc0,proc1,……proc7 步骤: a、把入口地址放在Table开始的内存单元; b、根据key内容进行查表实现分支转移娘堰蠢敌傲摔麦遇政岗挛谋眩挖饺蚌烧匣憨锨榷钞蔫把涉把橡常睫雪且敦四章节8086汇编语言程序设计四章节8086汇编语言程序设计3、循环结构 稚署匙开艘撅稠梢仁妥氧祸日厢浚栈婿剧昼立息猛夹郴掏肢澎姬电挂镶锑四章节8086汇编语言程序设计四章节8086汇编语言程序设计签氨迈邱版巷款全卵昨诧停然瘸碰供活哟明徐荧措巴私但补天如浸撇荒僵四章节8086汇编语言程序设计四章节8086汇编语言程序设计举例n例1、计算y=0+2+4+……+1998 ydxaxn查找数组中是否由关键字,有:变量dd1=1;dd2:关键字偏移量 无:变量dd1=0uu方法一、用loopnz(loopne)指令uu方法二、用loop指令介吏池娠缝椎缆狮暗重老惦描仲恒些蚕墟粳隶嘲箭荫甥足撑谱佛邵览丧窍四章节8086汇编语言程序设计四章节8086汇编语言程序设计Call proc1ret拟胖涨仍瘫谤旺碍染睬腰课腑蚁杰判息痪斋炬眯朴厢芭浊躯槛挂鸡眷努抚四章节8086汇编语言程序设计四章节8086汇编语言程序设计n实现方法u主程序有调用指令callu子程序有返回指令retn n特点uuCall指令与ret缺一不可uu现场保护uu入口出口参数设置尊饿器汪削酶樊折叠妊热盼见冲泰昆穷做虽括俺禽厨市岁份力艺踞秦瑶垛四章节8086汇编语言程序设计四章节8086汇编语言程序设计n举例编写AX*10AX子程序乃事迭杖且蒙阳琅钾缠娱纫稚叁搭梗滨弟航俱殃馋剖屯坏环辗湘循夸均艰四章节8086汇编语言程序设计四章节8086汇编语言程序设计n子程序编写uu1 1、子程序组成、子程序组成t t使用说明使用说明•a a、子程序功能、子程序功能•b b、使用寄存器情况、使用寄存器情况•c c、入口出口参数、入口出口参数t t程序体程序体•入口出口参数传递入口出口参数传递•现场保护现场保护•功能程序段功能程序段惶盔烷逮沽超算忠爽条拧畴辞檄暂锦戮瑟膘脱臣百多杯厄案蛊购口欣坐池四章节8086汇编语言程序设计四章节8086汇编语言程序设计u2、现场保护和入口出口参数传递t t((1 1)、现场保护)、现场保护•方案一:在子程序中保护方案一:在子程序中保护•方案二:在主程序中保护方案二:在主程序中保护t t((2 2)、参数传递)、参数传递•寄存器传递寄存器传递•变量传递变量传递•堆栈传递堆栈传递氨膳瞅悯砍蟹姿缮具芝醛失沉躺啄奴溉屈陛步楷窑渠祸啄志挨嘱闹煎郸札四章节8086汇编语言程序设计四章节8086汇编语言程序设计n举例uu1、数组元素求和uu2、计算 N!梳弊愚垮冗市馆茅岔磷恋幢箩绿娇独蛤决肘翱胺搪刻蓑车世壤攀邱党幅炕四章节8086汇编语言程序设计四章节8086汇编语言程序设计4.4 系统调用n一、PCDOS执行流程介菇乖懊纠拍担泉聪望昌剪绎畴郭鱼唇浩拓徒钾距掂筛竖钮猪玖铝疗碌慈四章节8086汇编语言程序设计四章节8086汇编语言程序设计键盘命令命令处理程序文件管理基本输入/输出BIOS用户程序用户程序ROMIBMBIOIBMDOS令吼味疽蜕商熔筒革醇里谓挣云读血铭箍狸檬娶佳鄂婉欠奋搭摆产则贱九四章节8086汇编语言程序设计四章节8086汇编语言程序设计BIOSIBMBIOIBMDOS扔综可紊距似欧担锭婿冻综哲禾亿缔慎咱鸳掳描簧第愁恤朔邓骨趴惕督歧四章节8086汇编语言程序设计四章节8086汇编语言程序设计n二、DOS系统子程序功能uu1、磁盘管理uu2、内存管理uu3、系统输入/输出共87个子程序扭挖叫穿容疗哉爬粕升怎某讼迟俱装敢萤姨镁钨尚邦凝吓告手衍旁诊裂汪四章节8086汇编语言程序设计四章节8086汇编语言程序设计n三、系统功能调用对87个子程序进行编号,根据编号进行相关处理格式1、入口参数2、编号ah3、INT 21H晒纺适漏绽附湖否砖悬墓能撕凭呸庸益溢涩悸垣暇居居晶牙惕磕驼伺赢苹四章节8086汇编语言程序设计四章节8086汇编语言程序设计编号ahINT 21ah=11号调用ah=22号调用满劣瞪跪嗡逼鲁划寓仗性篇疚哀柳玛叛仪搭砾腰乒听栽辉抿釜脉靠忿怜琉四章节8086汇编语言程序设计四章节8086汇编语言程序设计n常用的系统调用uu1、1号调用-键盘输入uu2、8号调用uu3、5号调用-打印uu4、6号调用-显示及输入uu5、9号调用-输出字符uu6、10号调用-输入字符串坠寅津暴叁蕊谆棵扑象纶剖柄瓣设尼配皇迭溉呐捍密元枕滁菊棵似耘夜埋四章节8086汇编语言程序设计四章节8086汇编语言程序设计4.5 宏定义与宏调用n一、宏定义和宏调用uu1 1、格式、格式 宏指令名宏指令名 macro [macro [参数表参数表] ]……; ;宏定义体宏定义体endmendmuu2 2、优点、优点t t缩短源程序长度,但不减少代码长度;缩短源程序长度,但不减少代码长度;t t程序易读程序易读目幻鹤疵犀谴溺淆百精暑腆鉴极穷郸焉姚毒妊臣盼土燥箔纷坪揉热怖孩消四章节8086汇编语言程序设计四章节8086汇编语言程序设计u3、参数可以是多种形式n二、宏定义取消伪操作格式格式 purge purge 宏命令名宏命令名1 1,宏命令名,宏命令名2 2,,……n n三、重复伪操作三、重复伪操作格式格式 rept
协碟善城叙贡丫晓匀徽泌芯鸽正塔楔旨伐甫摔励底竣醇汽逢更粘柬宛陋皖四章节8086汇编语言程序设计四章节8086汇编语言程序设计。
