《微机原理》第四章汇编语言程序设计(过控和机械).ppt
《《微机原理》第四章汇编语言程序设计(过控和机械).ppt》由会员分享,可在线阅读,更多相关《《微机原理》第四章汇编语言程序设计(过控和机械).ppt(36页珍藏版)》请在装配图网上搜索。
第四章8086汇编语言程序设计,4.1汇编语言程序结构,4.1.1汇编语言的语句格式,指令语句的一般格式如下:[标号:]指令助记符(操作码)操作数;注释,⑵伪指令语句格式,伪指令语句格式如下:[名字]伪指令符操作数;注释,⑴指令语句格式,4.1.2常数、变量、表达式,㈠常数,⑴数值常数,表各种形式数字常量格式对照表,字符串常量是用单引号引起来的一个或多个字符。字符串常量是以各字符的ASCⅡ码表示的。如‘A’用41H表示,‘A1B2’用41H,31H,42H,32H表示。,⑵字符串常数,㈡变量(或标号),变量(或标号)有三个属性:段地址属性、偏移地址属性、类型属性。,㈢表达式,⑴算术运算符(了解),算术运算符包括:+(加)、-(减)、*(乘)、/(除)、MOD(求模)等。,【例】用算术运算符进行数值表达式运算。,MOVAL,25*4–50;AL=50=32HMOVBL,50/7;NUM2=7MOVDL,50MOD7;DL=1┆,逻辑运算符包括:AND、OR、XOR、NOT四种运算。【例】用逻辑运算符进行运算。MOVAL,34HAND0FH;04H→ALMOVBL,05HOR30H;35H→BLMOVCX,NOT00FFH;0FF00H→CXMOVDX,789AHXOR000FH;7895H→DX,⑵逻辑运算符(了解),⑶关系运算符(了解),关系运算符包括:相等(EQ),不等(NE),小于(LT),大于(GT),小于等于(LE)及大于等于(GE)。【例】用关系运算符进行数值表达式运算。MOVDH,10LT5;DH=0MOVCL,0AAHGT7FH;CL=0FFHMOVAX,‘A‘EQ41H;0FFFFH→AXADDBL,5LT0101B;BL+0→BL,PTR运算符格式:类型PTR地址表达式PTR用来对存储单元(重新)规定类型。,⑷属性运算符,例如:MOVBYTEPTR[1000],0;[1000]清零MOVWORDPTR[1000],0;[1000]、[1001]清零,①SEG运算符格式:SEG变量或标号功能:分离出其后变量或标号所在段的段基址。例如:MOVAX,SEGARRMOVDS,AX②OFFSET运算符格式:OFFSET变量或标号功能:分离出其后变量或标号的偏移地址。例如:MOVBX,OFFSETBUF,⑸数值返回运算符,③TYPE运算符(了解)格式:TYPE变量或标号,4.1.3伪指令,⑴数据定义伪指令,常用的数据定义伪指令有DB,DW,DD,DQ,DT。格式:[变量名]数据定义伪指令表达式[,…],⑵段定义伪指令SEGMENT/ENDS,,段名SEGMENT……本段程序内容…段名ENDS,【例】为数据段分配存储单元。DATASEGMENTADB11H,12H,13HBDW1122H,3344HCDD12345678HDATAENDS,【例】为字符串分配存储单元。DATASEGMENTSTR1DB‘1234’STR2DW‘AB’,‘CD’,‘A’STR3DD‘AB’DATAENDS,┆NUM1EQU25*4–50;NUM1=50NUM2EQUNUM1/7;NUM2=7NUM3DBNUM1MOD7;(NUM3)=1VAR1DB1,2,3,4,5VAR2DB‘12345’NUM4EQUVAR2-VAR1;NUM4=5NUM5EQU0FH┆,【例】,⑶符号定义伪指令,格式:符号名EQU表达式,⑷段分配伪指令ASSUME,格式:ASSUME段寄存器:段名[,段寄存器:段名]【例】用ASSUME伪指令建立代码段、堆栈段与CS和SS的对应关系。DATA1SEGMENTADB1,2,3DATA1ENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSDATA2SEGMENTBDB‘123ABC’DATA2ENDSDATA3SEGMENTCDB?,?,?DATA3ENDSCODESEGMENTASSUMEDS:DATA1,ES:DATA3,CS:CODE,SS:STACK,START:MOVAX,DATA1MOVDS,AX;DATA1→DSMOVAX,DATA3MOVES,AX;DATA3→ES┆CODEENDSENDSTART,⑸源程序结束伪指令,格式:END标号,⑹置汇编地址计数器伪指令ORG,格式:ORG数值表达式【例】给汇编地址计数器赋值。DATASEGMENTORG10;置$值为10VAR1DW100H,200HORG$+5;置$的值为14+5,即为19VAR2DB1,2,$+1,$+2NEQU$-VAR2;($)=23,N=4DATAENDS,4.2常用的DOS系统功能调用,⑴单字符输入(1号调用)格式:MOVAH,1INT21H功能:从键盘输入字符的ASCII码送入寄存器AL中,并显示。,⑵单字符显示(2号调用)格式:MOVDL,待显示字符的ASCII码MOVAH,2INT21H功能:将DL寄存器中的字符送显示器显示。,⑶结束调用(4CH号调用)格式:MOVAH,4CHINT21H功能:终止当前程序并返回调用程序。,⑷显示字符串(9号调用)格式:LEADX,待显示字符串首偏移地址MOVAH,9INT21H功能:将当前数据区中以‘$’结尾的字符串送显示器显示。,DATASEGMENTSTRDB0DH,0AH,Exampleofstringdisplay!$DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODEBEGIN:MOVAX,DATAMOVDS,AXLEADX,STRMOVAH,9INT21HMOVAH,4CHINT21HCODEENDSENDBEGIN,【例】若要在屏幕上显示字符串“Exampleofstringdisplay!”,则程序如下:,综合举例,【例】已知一数据段中的数据为:DATASEGMENTADW0CHBUFDB‘AB’,0DH,0AHCEQU500HBDW0FFAAHDDDBUFMDB2DUP(1),2DUP(2,’B’)DATAENDS请画出该数据段数据存储的形式。,汇编语言程序设计一般有以下几个步骤:步骤1:分析问题,确定算法步骤2:绘制流程图步骤3:根据流程图编制程序步骤4:调试程序,4.3顺序程序设计,㈠汇编语言程序设计的一般步骤,①起止框,㈡流程图,,②判断框,,③处理框,,④指向线,⑤连接框,,㈢顺序程序设计举例,【例】试编写一程序,将两个一位十进制数相加,要求算术式以字符串的形式存放在DATA1为首的单元中,结果存放在DATA2单元中。,CODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX;DATA→AXXORAX,AXMOVAL,DATA1ADDAL,DATA1+2AAAORAL,30HMOVDATA2+1,ALORAH,30HMOVDATA2,AHLEADX,DATA1MOVAH,9INT21HMOVAH,4CHINT21HCODEENDS;退出DOS状态ENDSTART,,开始,,被加数→AL,,用ADD完成两个数相加,,AAA调整,结果送DATA2,,显示算术式和显示结果,,返回DOS,结束,DATASEGMENTDATA1DB6+8=DATA2DB?,?,$DATAENDS,4.4分支程序设计,⑴无条件转移指令,㈠转移指令,JMP标号(MEM/REG),⑵条件转移指令,①根据单个标志位的条件转移指令,②无符号数条件转移指令,【例】比较无符号数大小,将较大的数存放AX寄存器。CMPAX,BX;(AX)-(BX)JNBNEXT;若AX>=BX,转移到NEXTXCHGAX,BX;若AX=BX,转移到NEXTXCHGAX,BX;若AX- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理 微机 原理 第四 汇编 语言程序设计 机械

链接地址:https://www.zhuangpeitu.com/p-12673327.html