




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章汇编语言程序设计汇编语言概述4.1汇编语言源程序格式4.2汇编语言程序设计4.3DOS功能调用4.4作业蜂株举偷氮钡胜抖叙玄咯檀污寨叁竞腹真种荚肝械观气惶阮倘垣足扮守钳第4章汇编语言程序设计第4章汇编语言程序设计4.1汇编语言概述机器指令:用二进制编码的指令 如:1000100111011000机器语言编写程序烦琐,难记忆,易出错。符号指令:由助记符、符号组成,与机器指令一一对应MOVAX,BX1000100111011000汇编:机器只能识别机器指令,所以需要将符号指令翻译成机器指令,翻译的过程称作汇编。汇编程序:完成汇编任务的程序。太脸削叹萌毕于酷街盟夜庐丽歧帜皱伐咒掂吭速伺糟襄户榷爽妒山向钧粳第4章汇编语言程序设计第4章汇编语言程序设计4.1汇编语言概述(续)汇编语言源程序:用符号指令书写的程序。1E PUSHDS2BC0 SUBAX,AX50 PUSHAXB83412 MOVAX,12348ED8 MOVDS,AX汇编语言源程序汇编程序目标文件图4.1戮拣枢七辐魏屁搞碉迈五宝有差友蜂怪遮盔操涅茬紧抑敞鸵盟句焊织儒无第4章汇编语言程序设计第4章汇编语言程序设计图4.1汇编语言程序的建立、汇编和连接过程编辑程序Prog.asm文件汇编程序Prog.obj文件连接程序Prog.exe文件Edit.exeMasm.exeLink.exe衬氧讥享罪福勿夜鼻舞诗诸估糠百健崭棠樱驴息俱蘑春队油斯笼馈墅擞衅第4章汇编语言程序设计第4章汇编语言程序设计4.2汇编语言源程序格式汇编语言源程序采用分段式结构。一个汇编语言源程序由假设干段组成,一般有数据段、代码段、扩展段和堆栈段四种类型,源程序可以根据实际需要来确定段的数目。汇编语言的语句格式4.2.1伪指令4.2.2汇编语言源程序的结构4.2.3思考题惕着慈焊殴霄盒庄并爷驹旗筋投谱榆舆猛券畜该凰伞严务溯褪媳凡不摔塌第4章汇编语言程序设计第4章汇编语言程序设计4.2.1汇编语言的语句格式汇编语言的语句分类1汇编语言语句的格式2井百把捧俘政邯读锥裸臃运泳荷秤繁肆诚锥梅茧骆藐冤板际讫铂怪题躬修第4章汇编语言程序设计第4章汇编语言程序设计1.汇编语言的语句分类汇编语言有三种根本语句:指令语句★伪指令语句★宏指令语句★祥荐斑炬味咯习知坎缆圭肉畸呵烹壮朱珍隆猜菊柿驱涧融沪送昆钝搔历更第4章汇编语言程序设计第4章汇编语言程序设计指令语句指令语句是指在汇编时产生目标代码对应着机器某种操作的语句,每条指令语句都对应着CPU的一条机器指令。糯逞迪劲质州凸级斧惩腆监袖拄鞠晒更督再掂厄母魂汞耸椭吕诉忧巳耐侍第4章汇编语言程序设计第4章汇编语言程序设计伪指令语句伪指令语句不产生任何目标代码,它是一种指示性语句,只是指示汇编程序如何进行汇编,只有在汇编和连接时才起作用。香凌场价着拣晶郡骂拂通向谎佬糟垛甫磷轿侧淡铅别柬鞭这绘啼灾米请毯第4章汇编语言程序设计第4章汇编语言程序设计宏指令语句宏指令语句是以宏名定义的一段指令序列,是一般性指令语句的扩展。在汇编时,但凡出现宏指令语句的地方全部用其对应指令序列的目标代码代替。黑山入塔窝馅面咽纲赂嗡劳芥赎拔忱揽猩浮贩蛀砧斋贡停君继碾钒拄钓赘第4章汇编语言程序设计第4章汇编语言程序设计2.汇编语言语句的格式指令语句的格式为:[标号:]助记符号[操作数][;注释]伪指令语句的格式为:[名称]定义符号[参数][,…参数][;注释]标号和名称★助记符和定义符★操作数★注释★共待狗膳触纵澈醇瘸削螟南旷起劲智解辞衣衙遵州面拄睦链都眉僳壤穗癌第4章汇编语言程序设计第4章汇编语言程序设计1)标号和名称标号和名称代表该语句的存储器地址。标号后面要紧跟一个冒号“:〞。标号在一些指令中充当操作数,用来表示转移地址。名称可以是变量名、段名、过程名等。汇编语言中标识符的命名规那么为:①标识符的第一个字符必须是字母、问号?、@或下划线四者之一;②从第二个字符开始可以是字母、问号?、@、下划线或数字;③标识符不能是保存字(例如MOV、STACK)。在给标识符命名时,应使标识符命名与它代表的内容相符。持脚躲梁旧肇醉败者饯晴亥割头托顺域砌雷晚影彦觉柬赛愧慢牧蓟独殖尿第4章汇编语言程序设计第4章汇编语言程序设计2)助记符和定义符指令语句中的助记符,规定了该指令语句的操作。例如ADD、XOR等。伪指令语句中的定义符对应于8086宏汇编中提供的伪操作功能。顽太吉噶昭等杂司啮申尺亡敬痊榔砚牲鬃烦男挺躇雪陵邱薛奇唯半为末沼第4章汇编语言程序设计第4章汇编语言程序设计3)操作数根据不同的指令,可能是单操作数或双操作数,也可能不带操作数。伪指令语句中的操作数可以是一个或多个,操作数之间用逗号隔开。操作数可以是:常量★变量★标号★寄存器★表达式★耸矽僻淳拉保请埠晤旁脐钓孵绕疗宗涤呵嘉敢鸵噬替玫臀洁婆遵简娃落摇第4章汇编语言程序设计第4章汇编语言程序设计(1)常量常量:指令中出现的固定不变的值。可分为:数值常量字符常量数值常量允许使用二进制、十进制、十六进制数,但要注意应以B、D、H字符结尾。十六进制数如果以字母开头,那么必须在该数前面加0,以区别于标识符,如0F5H。ASCII码常数可将字符放在单引号内,如‘A’。的豫呸只取啸粹诽滥竖簿虫泼乘椭玻瘦豢咽栓钮痴区馅驶憨宾枕化冒菩扭第4章汇编语言程序设计第4章汇编语言程序设计(2)变量变量:指存放在某些存储单元中的值,这些值是可变的。可以用不同的寻址方式对其存取。变量具有如下三种属性:段属性:指变量所在段的段基址。偏移量属性:指变量单元地址与段的起始地址之间的地址偏移量。类型属性:是指变量所占存储单元的字节数大小。类型有字节(BYTE)、字(WORD)、双字(DWORD)等。株客矿塞素溃挂盾窍咸见足涛贬钟膜磨褥沤鸽始捞闽情醉痞台威陷西样桩第4章汇编语言程序设计第4章汇编语言程序设计(3)标号标号有三种属性:段属性:定义标号的程序段的段基址,当程序中引用一个标号时,该标号的段基址应在CS存放器中。偏移量属性:标号所在段的起始地址与定义标号的地址之间的字节数。标号的类型属性:NEAR和FAR。NEAR标号可以在段内被引用,它所代表的地址指针为两个字节;FAR标号可以跨段引用,它所代表的地址指针为四个字节。才某彰郴箕息蒲轨怨霜炙既稼磅偶斟环揩磕衍霞襄汇粱葵白乎汾勃泳静威第4章汇编语言程序设计第4章汇编语言程序设计(4)存放器操作数局部是存放器名,如AX、BX、SI等。抱炭淡酪捆歼素第蜂米幻缕遍被难贺抨说转倒盼冻且胀趾递睡锑强郝抄宾第4章汇编语言程序设计第4章汇编语言程序设计(5)表达式表达式:由常数、变量、操作符和运算符组成。有三种运算符:算术运算符逻辑运算符关系运算符有两种操作符:分析运算符合成运算符表达式分为数值表达式和地址表达式。数值表达式只产生数值结果。地址表达式不是单纯的数值,而是具有不同属性的存储器地址变量或标号,属性包括:段、偏移量和类型。襄歹憎颧品膘富醒炎级寇耘猖冗央肚赂鲤坤匹失菜傣戮蔫难须陌彦绪贱龟第4章汇编语言程序设计第4章汇编语言程序设计①算术运算符包括:+(加)、-(减)、×(乘)、/(除)、MOD(取模)等。算术运算符可用于数值表达式,运算结果是一个数值。在地址表达式中,只能使用“+〞、“-〞运算符。槽晋欲挫盎凭扑喊沤定晦绒头搬杠豌鸦肯蒲劣抒糜复悄逻傀习们搬馆涨桥第4章汇编语言程序设计第4章汇编语言程序设计②逻辑运算符包括:AND(与)、OR(或)、XOR(异或)、NOT(非)。注意:逻辑运算符只适用于数字操作,对存储器地址操作不适用。例:MOVAX,789AHXOR000FH该指令实际等价于MOVAX,7895H。膨没查恰于雷锭裂奢拐规赃宵买魂欠传桌叹监才幢枉胡恒敖罚惦疹锚煎泰第4章汇编语言程序设计第4章汇编语言程序设计③关系运算符包括:EQ(等于)、NE(不等于)、LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)。关系运算符所连接的两个操作数,必须是数字或是同一段内的存储器地址。运算结果为数字值。当关系不成立,那么结果为0;当关系成立,那么结果为全1。例:MOVAL,5NE2;关系成立,故(AL)=0FFHMOVAL,5LT2;关系不成立,故(AL)=00H氨楼敞锌皆民涉那么桃蓉匣博殖栗汛坷剩吨鲁冶葬踪呕洞榆筷喘兼疵丑术矛第4章汇编语言程序设计第4章汇编语言程序设计④分析运算符取地址偏移量运算符OFFSET★取段基址运算符SEG★取类型运算符TYPE★取变量单元数运算符LENGTH★取变量字节数运算符SIZE★动焚锹垦缮拴忌漆背俺沿赣糖陋逮摹否履持仍柜掂露玲信淹蛹蛔蛰颖蛹枯第4章汇编语言程序设计第4章汇编语言程序设计a)取地址偏移量运算符OFFSET格式:OFFSET变量或标号例:MOVSI,OFFSETBUF等价于LEASI,BUF注意:OFFSET后面只能是变量或标号。了钒掌勾婪混妮亩南秉椽苞小工本触粥叫驭估席迁枫辉慑寇尧悼练进洞订第4章汇编语言程序设计第4章汇编语言程序设计b)取段基址运算符SEG格式:SEG变量或标号例:MOVAX,SEGBUF;将BUF所在段的段基址送入存放器AX。锗运直翘撬贮略澄祖诲叮呆企潦松戍挛烷键梯夏邮骄磁破帆综悯啤萤童席第4章汇编语言程序设计第4章汇编语言程序设计c)取类型运算符TYPE格式:TYPE变量或标号该算符返回的结果为一数值。表4.1TYPE返回值与变量、标号类型的对应关系TYPE返回值变量类型TYPE返回值标号类型1BYTE-1NEAR2WORD-2FAR4DWORD息狞芯盯厕贞颠乒桅踊褂侦纂妇驰暂清删席欠贡擦蹄析鳞洁盒怨层蛀答帐第4章汇编语言程序设计第4章汇编语言程序设计d)取变量单元数运算符LENGTH格式:LENGTH变量如果一个变量已用重复操作符DUP说明其变量的个数,那么利用LENGTH算符可以得到这个变量的个数。如果未用DUP说明,那么得到结果总为1。图非案沦螺抱觅郴辰姨环咯信供奋蹬观壬牧映跺岗吗咸舍屿姿迪元擒澳溜第4章汇编语言程序设计第4章汇编语言程序设计e)取变量字节数运算符SIZE格式:SIZE变量如果一个变量已用重复操作符DUP说明其变量的个数,那么利用SIZE算符可以得到这个变量的字节总数。如果未用DUP说明,那么得到的结果和TYPE算符所得结果相同。霓羊拜五肋徽遍赛乳挛卫黎陋娜喂逢荒错蚌慢辕烤坟庐蜜倍赠潮龚旷盗织第4章汇编语言程序设计第4章汇编语言程序设计⑤合成运算符可对变量、标号或存储器操作数的类型属性进行修改。类型设置运算符PTR★定义类型运算符THIS★滦恨熟轴纪瀑诈企擅窄果衣击气闹易犯燕柬绵世运课汞难鸿鲤孕肾炬工剁第4章汇编语言程序设计第4章汇编语言程序设计类型设置运算符PTR格式:类型PTR表达式其中类型可以是BYTE、WORD、DWORD、NEAR、FAR。该算符强制设置表达式类型为算符前的规定类型。例:MOVBYTEPTR[SI],200刀佯迹妓恒符镍维歪烤瘴符蘑侧探蹲滋蛀疑观励景胁舷枚肺序掇彬技州望第4章汇编语言程序设计第4章汇编语言程序设计定义类型运算符THIS格式:THIS类型该运算符的功能是将类型符后面的类型属性赋予当前的存储单元。例4.2DATA1EQUTHISWORDDATA2DB12H,34H,56H,78HDATA1变量是字类型,而DATA2为字节类型,它们具有同样的段和偏移量。炮驻阻菇灵印础盗缸肺瘁维浇浴殆疏放纱歌尼尊饱织扭忘趁路荫疡提臃废第4章汇编语言程序设计第4章汇编语言程序设计4)注释注释由分号“;〞引导,用来说明一段程序、一条或几条指令的功能,使程序便于阅读。汇编程序对注释不进行汇编。三泪辊祁庸迈踩组巳馈缉防嚼比络淋栋哑舱在稚耶竣露沼岔劝烈些决耶井第4章汇编语言程序设计第4章汇编语言程序设计4.2.2伪指令伪指令是给汇编程序的控制命令,在汇编过程中由汇编程序进行处理。翻译成目标程序后,这些伪指令就不存在了。符号定义伪指令1数据定义伪指令2段定义伪指令3过程定义伪指令4源程序结束伪指令5酗汪亲苇捻豺袱湛屿明僳剥探屈服晚插荚褐陕哮检粗艰丹唉适鲁墟都祖昭第4章汇编语言程序设计第4章汇编语言程序设计1.符号定义伪指令符号定义伪指令用来给一个符号重新命名,或定义新的类型属性等。这些符号包括汇编语言中所用的变量名、标号名、过程名、存放器名以及指令的助记符等。符号定义伪指令有:等价伪指令★等号伪指令★卜舷唐本董佃嫉盈纂询轴盾滑鸵懒尽诅腕享辨走友坚迂尧划臻排嘲纲恃灶第4章汇编语言程序设计第4章汇编语言程序设计1)等价伪指令格式:符号名EQU表达式例:AEQU5*3+2利用EQU伪指令,可以用一个名字代表一个数值。如该数值在程序中屡次被引用,这种方法可以使程序更加简洁,并且将来修改数值时,只要修改一处,而不必修改多处,提高了修改的效率。利用EQU伪指令,也可以用一个较短的名字来代表一个较长的名字。EQU伪操作不能对同一个符号重复定义。抄绣盔堤残拇射侗误涵医贱抨玖鳖湘逃诊届熟眼践娃腑擞浴枝呻叙焚齐婪第4章汇编语言程序设计第4章汇编语言程序设计2)等号伪指令格式:符号名=表达式等号伪指令主要用来定义符号常量。其功能与EQU类似,而与EQU的唯一区别是它能对符号进行再定义。涕莫慰邀竿桓琢蛤贫市噪屋辕跋颧攻甫裹东久铁闲闻兴煽崩钓谨膀汾伎警第4章汇编语言程序设计第4章汇编语言程序设计2.数据定义伪指令数据定义伪指令用来定义一个变量,为变量分配存储空间,赋初值等。格式:[变量名]伪指令表达式[,表达式]变量名字段为可选项,可有可无。表达式可以不止一个,但相互之间应以逗号分开。伪指令表达式例4.4例4.5例4.8苇我谩勘烯逗陷截汞势驳驳沽馅仁惩惜伟月答涩今然巧眼鞠蜒卧吃画搁坡第4章汇编语言程序设计第4章汇编语言程序设计伪指令用DB定义的变量类型为字节(BYTE);用DW定义的变量类型为字(WORD);用DD定义的变量类型为双字(DWORD);用DQ定义的变量类型为四字(QWORD);用DT定义的变量类型为10个字节(TBYTE)。垢兵蹈趟一销肮已菊一宾越途旨澡才容灰掘寂茸埋茨枣总虹搂淳藉割簧弄第4章汇编语言程序设计第4章汇编语言程序设计表达式表达式可以是以下几种:常量或常量表达式。ASCII码字节或字节串。问号“?〞表示初值未确定,常用来预留存储空间。重复子句DUP格式为:NDUP(表达式)其中N为重复次数,括号内的表达式为重复的内容。地址表达式。即用变量名来表示的变量地址。扳落盈唆差硒页塞蚊锡池苫淮趁雏沈掐吟畜裴胀立勿属站筐白呵渤泪簿楔第4章汇编语言程序设计第4章汇编语言程序设计例4.4X1DB08HBUFDW01H,02H,03H,04HX108H01H存储器00HBUF02H00H03H00H04H00H01H02H03H04H骨铰桌段刮颂力仿慷几媒杂披粉氏幢泵肉闭诬年凝哭踊篷隶春萨渺眩对戌第4章汇编语言程序设计第4章汇编语言程序设计例4.5BUF1DB‘HELLO’BUF2DB‘AB’BUF3DW‘AB’BUF1’H’‘E’存储器‘L’BUF2‘L’‘O’’A’‘B’‘B’‘A’BUF3肯困料硷眠武哮凋初稠拨查吾付体满骤弱轨谣咆铺鹏嫡墅蘸隆丝凛兼华寸第4章汇编语言程序设计第4章汇编语言程序设计例4.8BUF1DB‘HELLO’SA_BUFDWBUF1LA_BUFDDBUF1BUF1’H’‘E’存储器‘L’SA_BUF‘L’‘O’LA_BUFBUF1的偏移地址BUF1的偏移地址BUF1的段基址冯危几然堡煌觅贵呸畦铣铭臣纶毛紊骂哄惮骨竭股痛佯渴奋怕帧柬证息哮第4章汇编语言程序设计第4章汇编语言程序设计3.段定义伪指令一个汇编语言源程序由假设干个逻辑段组成,所有的指令、变量分别存放在各个逻辑段中。段定义伪指令用来定义汇编语言源程序的逻辑段。常用的段定义伪指令有:SEGMENT/ENDS★ASSUME★ORG★肤倔解扼雪壁第乃懦黎请引淌亿埋溶拭羊码聘敌蚌胚菏他刁婴门芭遏言咙第4章汇编语言程序设计第4章汇编语言程序设计1)伪指令SEGMENT/ENDS格式:段名SEGEMNT[定位方式][组合方式][‘类别’]…段名ENDS省略号局部:对于数据段、扩展段和堆栈段来说,一般是存储单元的定义、分配等伪指令;对于代码段来说,一般是完成程序功能的指令语句和伪指令语句。段名是程序员为该段起的名字,不可省略。定位方式、组合方式、‘类别’是赋给段名的属性。们贞限足杀醛销力非瘴体哇沂穴蛇蕾菠连滔剩啄广燎颧斋躺腮烘示岳絮待第4章汇编语言程序设计第4章汇编语言程序设计2)伪指令ASSUME通过建立段与段存放器之间的对应关系,来明确源程序中的逻辑段与物理段之间的关系。格式:ASSUME段存放器名:段名[,段存放器名:段名]其中段存放器名必须是CS、DS、ES、SS中的一个,段名必须是由SEGMENT和ENDS伪指令定义的段名。ASSUME伪指令只指定所定义的段和段存放器的对应关系,并不能将段基址装入段存放器中。数据段、扩展段、堆栈段存放器的初值应该在代码段中由程序写入,代码段CS存放器的初值由系统自动装入。例4.9微扮目结亡媒膜匪殃笛正赚吴疗强俯桓涨狂欺危虽咙管刺茫钨标濒组峪慈第4章汇编语言程序设计第4章汇编语言程序设计例4.9DSEGSEGMENTDATA1DB02HBUF1DW01H,02H,03HDSEGENDSESEGSEGMENTDATA2DB3DUP(03H)SUMDB?ESEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEG,DS:DSEG,ES:ESEGSTART:MOVAX,DSEGMOVDS,AX;将DSEG段的段基址装入DSMOVAX,ESEGMOVES,AX;将ESEG段的段基址装入ESMOVAX,SSEGMOVSS,AX;将SSEG段的段基址装入SS…CSEGENDSENDSTART火稗窖蜕蜡拉枝蛤纶甫袁垣夜谰冻瓤蛹刁副捏碎改疹狈迁潜襄隘挣熄成旱第4章汇编语言程序设计第4章汇编语言程序设计3)当前汇编地址计数器和定位伪指令ORG汇编地址计数器保存当前正在被汇编程序翻译的指令或伪指令的地址。用符号$来代表当前汇编地址计数器中的值。定位伪指令ORG可以设置当前汇编地址计数器中的值。格式:ORG数值表达式例4.11例子饲备畴昌寡枉脊穗马滑殉洁赴拘益宛怨堡正趴姥戏耀藐复晶升俏陈兵猎聪第4章汇编语言程序设计第4章汇编语言程序设计例4.11DSEGSEGMENTORG10HBUFDB‘1234’ORG$+5NUMDW50DSEGENDSBUF’1’‘2’存储器‘3’‘4’NUM0010H0014H0019H32H00H50农亨粤屎蠢井砸顶覆通仁暖湖战咳虾摹疡敲礁谰蔡爵骨玩姻吮签譬厉缆俞第4章汇编语言程序设计第4章汇编语言程序设计例子DATASEGMENT
ORG20HDB1DB12H,34H
ORG$+30HSTRINGDB‘ABCDEF’COUNTEQU$-STRINGDATAENDS屹驶蝗甸不倍咱锑仿龋旷写镍蜜惭粉剪瓮予双戌扁辙冻默枉懦名兴蚊招嗽第4章汇编语言程序设计第4章汇编语言程序设计4.过程定义伪指令格式:过程名PROC[NEAR/FAR]…过程名ENDP如没有指明类型,那么默认为NEAR类型。当一个程序段被定义为过程后,在其它地方就可以通过CALL指令来调用这段程序。硝挨馆淹蝴炭扩歇俗晦距给嗽重遮域拷蔓词浦爵嗅还楚砒柜固传帅踞斯呸第4章汇编语言程序设计第4章汇编语言程序设计5.源程序结束伪指令格式:END[标号/过程名]该语句为源程序的最后一个语句,表示源程序的结束。其中标号表示程序开始执行的起始地址。假设有多个模块相连接,那么只有主模块要使用标号,其他模块只使用END而不必指定标号。篇肾私埋椅示咖吓我妻乞评犁嘉智薛聊怨豪躺骸驳募涛唬扼系滇偶涅座邮第4章汇编语言程序设计第4章汇编语言程序设计4.2.3汇编语言源程序的结构例4.13:两数求和的程序段DSEGSEGMENT‘DATA’;定义数据段DATA1DB15H;被加数SUMDB00H;和DSEGENDS;数据段结束CSEGSEGMENT‘CODE’;定义代码段ASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AX;装入数据段DS初值MOVAL,DATA1;被加数送ALADDAL,12H;(AL)+12H→ALMOVSUM,AL;和送SUMHLT;暂停指令CSEGENDS;代码段结束ENDSTART;源程序结束汇编语言程序的结构是分段结构形式,一个汇编语言源程序由假设干段组成,每个段以SEGMENT开始,以ENDS结束。整个源程序以END结束。每个段均有假设干行指令,每一条指令占一行。拆摘神锥板嘉已嗜满薄兢洒妨海瞅营警壬烬踞铡蜒盾共砾告秆虎耿曰屈动第4章汇编语言程序设计第4章汇编语言程序设计思考题如果SALE=4,那么指令MOVBX,SALELT5执行后,BX的内容是。A.0B.4C.0FFFFHD.5答案:C慈裕曳锨恃杠要或魏代瞎抄狸噬捉毒蚕茄彤交伎梗嘴粹鄂揉梨勿疥扫坡懒第4章汇编语言程序设计第4章汇编语言程序设计思考题在汇编语言源程序中,以下伪指令只能出现一次的是。A.ORGB.ENDC.DWD.EQU答案:B爵敲拈篡疹伤哀嫡它憨涛跃嚏符母帖怎施烘菲宵妥纯压骚蕾晨沈赘社前瘁第4章汇编语言程序设计第4章汇编语言程序设计思考题数据定义DATADB‘1234’,执行指令
MOVCL,LENGTHDATA后,CL存放器的内容是。A.1B.2C.3D.4答案:A催努骏圾像肩慰盖征绞勋邑红础呈汹谣率香邑贤蟹绑崔卜堰堰选嚣沿蘸蚜第4章汇编语言程序设计第4章汇编语言程序设计思考题根据以下伪指令语句,105H和10AH单元的内容是。ORG100HSTRDB‘ABCDEFGH’DW‘?’DB10H,20HA.45H,3FHB.46H,10HC.45H,10HD.46H,20H答案:B扁鱼诣鹊辨誓卉桥颂烛券铣柑绅液恃赏方捌霞融醛疤贪教酝键汪脏钠撮鹃第4章汇编语言程序设计第4章汇编语言程序设计思考题符号定义语句如下:BUFDB10,20,30,‘456’SYMEQU$-BUF汇编后,SYM的值是
。A.4B.5C.6D.7
答案:C抄晚良考兽埂裴锋屯闷颈愤徒靠优佛吼绑条挺弛线湾径瞄奢机况乍箔驭阑第4章汇编语言程序设计第4章汇编语言程序设计思考题以下伪指令组成的语句经汇编后,BUF所代表的偏移地址值是。DATASEGMENTSTOREDB14DUP〔?〕BUFDB01H,02H,03HDATAENDSA.000BHB.0014HC.000CHD.000EH答案:D闷吾私榜蜕艰恳闸债熏陀萍漏辙匈盯秆房粥挪戊羽绍湃郸疯富霹阉官久碑第4章汇编语言程序设计第4章汇编语言程序设计思考题与数据定义语句DW5150H等效的数据定义语句是。A.DB51H,50HB.DB50H,51HC.DB‘QP’D.DW‘PQ’〔注:P、Q的ASCII码为50H、51H〕答案:B唤乞节焙容均射薯蒲拈榔削椎醚龙衅午瓶策惭镑蹲肇极先瘪压汪能荧狄修第4章汇编语言程序设计第4章汇编语言程序设计思考题执行以下程序段后,(AX)=。TABDW1,2,3,4,5ENTRYEQU3MOVBX,OFFSETTABADDBX,ENTRYMOVAX,[BX]A.0003HB.0300HC.0400HD.0004H答案:B宣鄂独汪漫挝沟酌漳停喳蒲班惺销肯葱嘻榔炙十鲤母杉上风想婉肋游慕聪第4章汇编语言程序设计第4章汇编语言程序设计思考题执行以下指令后:STR1DW‘AB’STR2DB16DUP(?)CNTEQU$-STR1MOVCX,CNTHLT存放器CL的值是。A.10HB.12HC.0EHD.0FH答案:B裙垮陇忠篮鹃沏拌币霞屋司熙畦耐彰滨垢吟掩妮家咙汇虱漫撵帖屁终么苞第4章汇编语言程序设计第4章汇编语言程序设计思考题执行以下指令后:STR1DW‘AB’STR2DB16DUP(?)CNTEQU$-STR1MOVCX,CNTMOVAX,STR1HLT存放器AX的值是。A.00ABHB.00BAHC.4142HD.4241H答案:C浸瓦络荧瞬犀及与瑞撑傍叶泛穗栈稻擅肥管滚沽伎辟善覆周篡涨迪贸搏肚第4章汇编语言程序设计第4章汇编语言程序设计思考题执行下面的程序段后,DAT1单元的值是
。DAT1DB12H,34HDAT2DB56H,78HMOVAX,WORDPTRDAT1CMPAX,WORDPTRDAT2JADONEMOVBX,WORDPTRDAT2MOVWORDPTRDAT2,AXMOVWORDPTRDAT1,BXDONE:HLTA.12HB.34HC.56HD.78H答案:C蔡铭浊劈炔多捎缸苫氰叫贰灵肩钉熏鄂褐粹篱升傍鹿腺货脐那痴何牡挫兄第4章汇编语言程序设计第4章汇编语言程序设计思考题执行以下程序:MOVAX,0MOVBX,1MOVCX,100A:ADDAX,BXINCBXLOOPAHLT执行后结果为〔AX〕=。A.5000B.5050C.5100D.5150答案:B剑腻很馒宇道霉虐奏粮忙辱秀慧凡娠妒鞘违竭淋遭绘病至骨局臣梨哉今吾第4章汇编语言程序设计第4章汇编语言程序设计思考题设VARDW1,2,$+2,5,6,假设汇编时VAR分配的偏移地址是0010H,那么汇编后0014H单元的内容是。A.6HB.14HC.5HD.16H答案:D都顶拴励筷叙钓莽苫暑斩觅郊保佃甲业琵疲津战敝胃敌吼榨辐往兄膛才羡第4章汇编语言程序设计第4章汇编语言程序设计思考题有以下数据段:DATASEGMENTORG30HCONEQU10HS1DB‘IBMPC’DB0AH,0DHCONTEQU$-S1S2DW‘IB’,’M’,’PC’,0A0DHDATAENDS上述数据段中S1、S2的偏移量分别是多少?CONT的值和S2+5字节单元的内容是什么?S1的偏移量=0030HS2的偏移量=0038HCONT=08HS2+5字节单元的内容=50H(‘P’)路左啃泌朱虞各血笛渭押岿米服践姓那囱憾电骄撑豹汪唾乖刃铣窑领枷虎第4章汇编语言程序设计第4章汇编语言程序设计思考题设已定义数据段:DATASEGMENT
VAR1DB?,?VAR2DB?,?ADRDWVAR1,VAR2DATAENDS假设要使ADR+2字单元中存放的内容为0022H,上述空白处应填写什么语句?答案:ORG0020H拙惦欣痒竣昭贰阅鸦轰斯铡肾史侠琉抱裤柱称峡敦乒梆掸证怪兼凯鄂守郸第4章汇编语言程序设计第4章汇编语言程序设计4.3汇编语言程序设计程序设计的基本步骤4.3.1顺序结构4.3.2分支结构4.3.3循环结构4.3.4子程序结构4.3.5足赎豫饶侵漳费纽纫瘁砖邵作动较谜呕肝混哦名诫五砧孔衙卿斌搐哮犹暴第4章汇编语言程序设计第4章汇编语言程序设计4.3.1程序设计的根本步骤分析问题,建立数学模型确定算法绘制流程图分配存储器及存放器编制程序调试程序整理开发文档、投入使用程序的根本结构有三种形式:顺序结构、分支结构和循环结构。缝歌澡钱冠噬五忙哆亮厄插擂拍酉苫看轮觅娶坯洱完塞柔噶蝗道屯胶勾圭第4章汇编语言程序设计第4章汇编语言程序设计4.3.2顺序结构顺序程序是指程序在执行时是完全按照指令的存放顺序从第一条开始逐条执行,直到最后一条指令为止。用顺序程序能较好地完成一些根本功能,例如数据的传送和交接、查找和算术运算等。它是构成复杂程序的根底。例4.14峙舱瑚普鄙细栓棕敝未航做箔癣郝侠巳奥庭题颠捡甚赊娩罐沥眠咯矛吃坚第4章汇编语言程序设计第4章汇编语言程序设计例4.14设内存单元DATA存放一字节无符号数,编程将其拆成二个一位十六进制数,HEX单元存放低位十六进制数,HEX+1单元存放高位十六进制数。DSEGSEGMENTDATADB8AHHEXDB0,0DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,DATA;无符号数送ALMOVAH,AL;保存副本到AHANDAL,0FH;屏蔽高四位MOVHEX,AL;保存低四位ANDAH,0F0H;屏蔽低四位MOVCL,4SHRAH,CL;右移四位MOVHEX+1,AH;保存高四位MOVAH,4CHINT21H;返回操作系统CSEGENDSENDSTART页典佣惩锹猜釜握川犬僧语屹肪波雏亦墅醚怀溢叼柳挟郝费尽你技一遍姥第4章汇编语言程序设计第4章汇编语言程序设计4.3.3分支结构在很多实际问题中,都是根据不同的情况进行不同的处理。这种思想表达在程序设计中,就是根据不同条件而跳到不同的程序段去执行,这就构成了分支程序。在汇编语言程序设计中,跳跃是通过条件转移指令来实现的。例子伤坪曹育咬弛篆桨貌乓喘榆章周谱茸沮副侥邱蟹夏烛矢慰甚伴蒲气笺使良第4章汇编语言程序设计第4章汇编语言程序设计分支结构程序例如设内存中有三个互不相等的有符号字数据,分别存放在X、Y、Z字单元中,编程将其中最小值存入MIN单元。DSEGSEGMENTXDW4321HYDW7658HZDW9B00HMINDW?DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,XCMPAX,YJLNEXTMOVAX,YNEXT:CMPAX,ZJLDONEMOVAX,ZDONE:MOVMIN,AXMOVAH,4CHINT21HCSEGENDSENDSTART韩糜岭藏锨货驻岿夕蹭又瑞耳蚀省订杰橇梁掏钾往腾坦增命提肉棉就雕躁第4章汇编语言程序设计第4章汇编语言程序设计4.3.4循环结构在程序设计中,经常遇到一个程序段需要屡次重复执行。对这类问题采用循环程序结构,可以使程序代码缩短,并节省内存。四局部:循环初始局部:建地址指针、置计数初值、设置必要的常数、对工作存放器及工作单元置初值或清0等。循环操作局部:重复执行的局部,循环的核心。循环修改局部:修改计数器、存放器、地址指针、恢复某些参数。循环控制局部:判断控制循环是否结束或继续.循环程序有两个根本结构:先处理后判断结构先判断后处理结构例4.17图4.4例4.18孪耗寨勋青腆揭栓算叶浙谱扁扰掺氛邢蕴燃稼靡剂册钉悍柄砍界赃蕉潘测第4章汇编语言程序设计第4章汇编语言程序设计图4.4循环结构图庭薄第汲悟款思烃上晚线龟傅蒋遵瓣镀凹因撂卧污灿秉批莫做莹蟹削化蛤第4章汇编语言程序设计第4章汇编语言程序设计例4.17试编程统计由DATA单元开始的数据块中能被3整除的数的个数。结果存于COUNT单元中。(设数据块中共有10个无符号数)分析:可以采用除法指令,对待判断的无符号数做除3操作,然后检查余数是否为零,假设为零,那么该数能被3整除。流程图源程序撼怕楼难截澜堰嫡蛊荤牟窟绑验远剿竖搜猜旭傈涩航绎撵瑰票害畜阶告全第4章汇编语言程序设计第4章汇编语言程序设计例4.17流程图裹婶众皿巧接聘夸啊韩鬃有塑滩暗蔬疽咏墅姻济惮绣闹蜜瞥眯窜抄咐跃夷第4章汇编语言程序设计第4章汇编语言程序设计例4.17源程序DSEGSEGMENTDATADB41,9,33H,0F0H,32,0AH,0FFH,99,68,23HCOUNTDW?DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMEDS:DSEG,SS:SSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AXLEASI,DATAMOVCX,10MOVDX,0MOVBL,3LP:MOVAL,[SI]MOVAH,0DIVBL ANDAH,AHJNZNEXTINCDXNEXT:INCSILOOPLPMOVCOUNT,DXMOVAH,4CHINT21HCSEGENDSENDSTART厢叮惊宝道宪麻塌喘似侍夫栏冈我剥蔫江莆纺切伯涛督粮搁人叹慕涩酉慧第4章汇编语言程序设计第4章汇编语言程序设计例4.18试编程统计DA1字单元中二进制数据中含1的个数,结果存于DA2单元中。分析:可以利用移位指令,将待判断的字数据一位一位地移到进位位中,然后判断进位位是1还是0,以此实现对二进制数据中含1的个数统计。流程图源程序诫淬猎枯站询坤恩橱逞级喀保雀咬抹干婿舅吁易鸭烧酝点丙筷吉困是寨向第4章汇编语言程序设计第4章汇编语言程序设计例4.18流程图墟拯父戚背叔扩廖串钞庇巳翠眉贤走消皿萨乎赌源醋丝刹魂草泻惨倚喂抑第4章汇编语言程序设计第4章汇编语言程序设计例4.18源程序DSEGSEGMENTDA1DW3F28HDA2DB?DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMEDS:DSEG,SS:SSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AXXORBL,BLMOVAX,DA1LP:ANDAX,AXJZDONESHLAX,1JNCLPINCBLJMPLPDONE:MOVDA2,BLMOVAH,4CHINT21HCSEGENDSENDSTART耕丈仍映哟综韧荚氨少烦僧荡楔茬掉牧庄晒酞缉玉拾守附秘群浚检黄屉喘第4章汇编语言程序设计第4章汇编语言程序设计4.3.5子程序结构在编写程序时,经常在不同的位置或不同的程序段中存在相同语句串,可以将它们抽取出来,组成子程序,供其它程序调用,调用子程序的程序被称为主程序。不但使主程序结构清晰,而且节省了内存空间。编写子程序的本卷须知例4.19例4.21勃岛卯早略哗浑谬贫议涸焊蛀扬挚狙骤显芭敞挎掸旨鸵季严樟已氧加绩檄第4章汇编语言程序设计第4章汇编语言程序设计编写子程序应注意主程序和子程序之间的信息交换主要通过参数的传递来实现。参数传递的方法有三种:存放器传递法存储器传递法堆栈传递法。注意保护和恢复现场。所谓现场,就是指调用程序当前CPU状态,包括标志存放器、通用存放器、段存放器以及指令指针存放器的内容。保护和恢复的操作一般在子程序中进行,进入子程序后,就应该把子程序中所使用到的存放器内容保存在堆栈中,而在子程序返回主程序之前根据堆栈中的内容恢复原来的状态。逢从傍职店狙来秽咕霓皿芹雍态痴暇帧映凡呐洁警桌耻溶箭骗始废涉葛匙第4章汇编语言程序设计第4章汇编语言程序设计例4.19编制程序实现两数据块的传送。子程序的入口参数SI和DI分别指向源数据块和目的数据块的首地址,CX用来存放数据块的长度。本例采用存放器传递参数的方法来完成主程序与子程序之间的传递参数。源程序爪魄绩氓檄茧派捎订檬弘皖劫搬烹缎情恩厢加倒飞疡舞勋片拒酱兼蹭稠摹第4章汇编语言程序设计第4章汇编语言程序设计例4.19源程序DSEGSEGMENTSOURCEDBd1,d2,…..,dnLENTEQU$-SOURCEDESTDBLENTDUP(?)DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMEDS:DSEG,SS:SSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AXLEASI,SOURCE;源数据块的首地址送SILEADI,DEST;目的数据块的首地址送DIMOVCX,LENT;数据块的长度送CXCALLMOVSTRMOVAH,4CHINT21H;子程序名:MOVSTR;功能:完成数据块的传送;入口参数:SI←源数据块的首地址;DI←目的数据块的首地址;CX←数据块的长度MOVSTRPROCNEARPUSHAXLP1:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPLP1POPAXRETMOVSTRENDPCSEGENDSENDSTART朱歌诲臀销件蔷滋迅讶弗蝶龙圈荣驴纬拢漱卢卡狡嚼叁妥语专削史祭瘁冶第4章汇编语言程序设计第4章汇编语言程序设计例4.21将内存中的两个数组的对应单元求和,其结果存放到另一个数组中,要求求和局部由子程序完成。需要注意,由于CALL指令将返回地址存放在堆栈的顶部,故在子程序中,从堆栈中取参数,不能使用POP指令,应该使用MOV指令直接到堆栈中取出参数。源程序谬蛊腰扬毋碑绥瑟桔讥誊竭勒救虱扳赴粤炒惰庭埠避铬鹊滋卷埋勺缀乔盾第4章汇编语言程序设计第4章汇编语言程序设计例4.21源程序DSEGSEGMENTA1DW100,300,28,40,55,121,39,21,39,165A2DW20,102,18,33,65,141,1,155,18,120A3DW10DUP(0)DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMEDS:DSEG,SS:SSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AXMOVCX,10MOVSI,OFFSETA1MOVDI,OFFSETA2MOVBX,OFFSETA3LOP:PUSHWORDPTR[SI]PUSHWORDPTR[DI]CALLSUMMOV[BX],AXADDBX,2ADDSI,2ADDDI,2LOOPLOPMOVAH,4CHINT21HSUMPROCNEARPUSHBPMOVBP,SPMOVAX,[BP+2]ADDAX,[BP+4]POPBPRETSUMENDPCSEGENDSENDSTART寺砸押爱抡秽屁申酵兴狄角胎萄蛤独尤漆题怖格半碾辉执脂茹帽靶徐葡再第4章汇编语言程序设计第4章汇编语言程序设计4.4DOS功能调用DOS(DiskOperationSystem)和BIOS(BasicInputandOutputSystem)为用户提供两组系统效劳程序。用户程序可以调用这些系统效劳程序。DOS提供假设干功能调用。包括根本输入/输出管理、内存储器读/写管理、磁盘文件的读/写管理、时间和日期的设置功能。BIOS在较低层次上为用户提供一组I/O程序,要求用户对硬件有一定的了解,但也不要求用户直接控制外设。BIOS驻留在ROM中,独立于操作系统。用户通过软中断指令INTn去调用DOS和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中历史明朝的统治教案-2024~2025学年统编版七年级历史下册
- 高功能抑郁症的临床护理
- 2025销售人员劳动合同范本 销售劳动合同样本
- 外伤性低颅内压综合征的临床护理
- 煤矿井下超大断面硐室施工技术规范
- 眼睑松弛症的临床护理
- 浙江国企招聘2025上半年湖州市交通投资集团有限公司招聘11人笔试参考题库附带答案详解
- 射洪七小期末试卷及答案
- 2025年物资采购合同模板
- 厦大美术高考试卷及答案
- 伤残鉴定 委托书
- 班组长、员工安全生产责任制考核记录表
- 老年康体指导职业教育79课件
- 北京市建设工程施工现场安全生产标准化管理图集(2019版)
- 2025年江苏省江宁城建集团招聘笔试参考题库含答案解析
- 大学生就业与创业指导知到智慧树章节测试课后答案2024年秋辽宁广告职业学院
- 高钛渣及其产品深加工项目的可行性研究报告
- 2024年中国黄油行业供需态势及进出口状况分析
- 三下26《和拖延的坏朋友说再见》心理健康教学设计
- 2025届山东省潍坊市高考英语二模试卷含解析
- 2023无人机系统测评规范
评论
0/150
提交评论