《41 伪指令(1)-精品文档资料系列.ppt》由会员分享,可在线阅读,更多相关《41 伪指令(1)-精品文档资料系列.ppt(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、3.循环指令循环指令(loop)l控制某程序段反复执行的次数。循环指令默认利控制某程序段反复执行的次数。循环指令默认利用用CX计数器,方便实现计数循环的程序结构计数器,方便实现计数循环的程序结构llabel操作数采用操作数采用相对寻址方式相对寻址方式LOOP labelLOOP label;CXCXCXCX1 1,;CX0CX0,循环到标号循环到标号labellabelLOOPZ labelLOOPZ label;CXCXCXCX1 1,;CX0CX0且且ZFZF1 1,循环到标号循环到标号labellabelLOOPNZ labelLOOPNZ label;CXCXCXCX1 1,;CX0C
2、X0且且ZFZF0 0,循环到标号循环到标号labellabelJCXZ labelJCXZ label;CXCX0 0,转移到标号转移到标号labellabel1LOOP格式:格式:LOOP LOOP label操作:操作:(CX)-1(CX)-1CXCX;若若(CX)0,(CX)0,则转至则转至label处执行;处执行;否则退出循环否则退出循环,执行执行LOOPLOOP后面的后面的指令。指令。不影响标志位。不影响标志位。实际上,该指令可以等价两条指令:实际上,该指令可以等价两条指令:DEC CX ;CX1CX JNZ dst ;ZF=0,转向转向dst执行执行2例、编写指令序列,确定AL中
3、“1”的个数。解:解:XOR AH,AH MOV CX,08H Start:ROL AL,1 JNC Lp INC AH Lp:LOOP Start;累加器清零累加器清零;设置循环次数设置循环次数;AL循环左移循环左移1位位;AL的最高位送的最高位送CF;CF=0,转移到转移到Lp;CF=1,AH+1AH;CX-1CX,CX0;循环到循环到Start执行执行3例:记录字符串中空格的个数;String是是附加段中的一个字符串附加段中的一个字符串mov cx,countmov si,offset stringxor bx,bxmov al,20hagain:cmp al,es:sijnz next
4、inc bxnext:inc siloop again;字符个数减字符个数减1,不为,不为0继续循环继续循环;;设置循环次数设置循环次数;bx0,记录空格数记录空格数;空格的空格的ASCII码为码为20H;ZF0非空格,转移非空格,转移;ZF=1是空格,个数加是空格,个数加1dec cxjnz again44.子程序指令(调用和返回)子程序指令(调用和返回)子程序是完成特定功能的一段程序子程序是完成特定功能的一段程序l当主程序(调用程序)需要执行这个功当主程序(调用程序)需要执行这个功能时,采用能时,采用CALL调用指令转移到该子程调用指令转移到该子程序的起始处执行序的起始处执行l当运行完子程
5、序功能后,采用当运行完子程序功能后,采用RET返回返回指令回到主程序继续执行指令回到主程序继续执行8子程序调用指令子程序调用指令 CALL(1)调用指令)调用指令指令格式:指令格式:CALL dst(子程序名)子程序名)指令功能:无条件的转移到子程序执行。指令功能:无条件的转移到子程序执行。操作:操作:首先将当前首先将当前IP内容压入堆栈。内容压入堆栈。SP-1=IPH;SP-2=IPL;SP=SP-2;IP=OFFSET dst9指令格式:指令格式:RET指令功能:在子程序结尾处必须有这条指令,指令功能:在子程序结尾处必须有这条指令,保证子程序结束后返回到原调用点。保证子程序结束后返回到原调
6、用点。操作:操作:IPL=SP;IPH=SP+1;SP=SP+2子程序调用和返回有子程序调用和返回有段间段间(即远程(即远程FAR PTR)和和段内段内(即近程(即近程NEAR PTR)之分。之分。(2)返回指令)返回指令115.中断指令中断指令中断(中断(Interrupt)是又一种改变程序执行是又一种改变程序执行顺序的方法顺序的方法中断具有多种中断具有多种中断类型中断类型中断的指令有中断的指令有3条:条:INT n IRET INTO本节主要掌握类似子程序调用指令的中断本节主要掌握类似子程序调用指令的中断调用指令调用指令INT n12控制转移指令小结控制转移指令小结用于主程序中,调用子程序
7、。用于主程序中,调用子程序。用于子程序最后,返回主程用于子程序最后,返回主程序。序。调用和返回指令调用和返回指令CALL dstRETCX中预置循环次数。中预置循环次数。循环控制指令循环控制指令LOOP dst8转移范围必须在转移范围必须在+127-128之内。之内。条件转移指令条件转移指令Jcc dst8主要特点主要特点指指 令令没有范围限制。没有范围限制。无条件转移指令(无条件转移指令(JMP)用于主程序中,调用中断程用于主程序中,调用中断程序。序。中断指令中断指令INT nIRETINTO133.7 3.7 处理器控制指令处理器控制指令1.1.标志操作指令标志操作指令 用来设置标志位的状
8、态。用来设置标志位的状态。(1 1)CFCF设置指令设置指令 CLC 0 0CFCF STC 1 1CFCF CMC CFCF变反变反(2 2)IFIF设置指令设置指令CLI 0 0IF(IF(禁止禁止INTRINTR中断中断)STI 1 1IF(IF(开放开放INTRINTR中断中断)(3 3)DFDF设置指令设置指令 CLD 0 0DF(DF(串操作的指针移动方向从低到高串操作的指针移动方向从低到高)STD 1 1DF(DF(串操作的指针移动方向从高到低串操作的指针移动方向从高到低)14HLT;进入暂停状态进入暂停状态暂停指令使暂停指令使CPU进入暂停状态,这时进入暂停状态,这时CPU不进
9、行任何不进行任何操作。当操作。当CPU发生复位或来自外部的中断时,发生复位或来自外部的中断时,CPU脱脱离暂停状态离暂停状态HLT指令可用于程序中等待中断。当程序中必须等待指令可用于程序中等待中断。当程序中必须等待中断时,可用中断时,可用HLT,而不必用软件死循环。然后,中断而不必用软件死循环。然后,中断使使CPU脱离暂停状态,返回执行脱离暂停状态,返回执行HLT的下一条指令的下一条指令HLTHLT不影响标志位。不影响标志位。2.2.外部同步指令外部同步指令(1)暂停指令暂停指令 HLT15(2)(2)空操作指令空操作指令NOPNOP不执行任何操作,但占用一个字节不执行任何操作,但占用一个字节
10、存储单元,空耗一个指令执行周期存储单元,空耗一个指令执行周期,然后执行下一条指令。然后执行下一条指令。NOP常用于程序调试常用于程序调试在需要预留指令空间时用NOP填充(占位子)代码空间多余时也可以用NOP填充还可以用NOP实现软件延时16第三章第三章 总总 结结寻址方式寻址方式指令系统指令系统基本寻址方式有七种:立即寻址、寄存器寻址、基本寻址方式有七种:立即寻址、寄存器寻址、(存储器)直接寻址、寄存器间接寻址、寄存器(存储器)直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址相对寻址、基址变址寻址、基址变址相对寻址 五个功能:数据传送、算术运算、逻辑运算、五个功能:数据
11、传送、算术运算、逻辑运算、程序控制程序控制、处理器控制指令处理器控制指令。18数数 据据传传 送送指令指令MOVLEAPUSHPOP输入输入输出输出INOUT指令总结指令总结逻逻 辑辑运运 算算移移 位位指令指令ANDORXORSHL/SHRSAL/SARROL/RORRCL/RCR程程 序序控控 制制指令指令JMPCALLRETLOOPJcc其它其它指令指令HLTNOPCLCSTC算术算术运算运算指令指令ADDADCINCSUBSBBDECCMP19作作 业业P74:1;2(1、3、5、7、9);3;4;5P75:7(1、7);8(1);920第四章第四章 汇编语言程序设计汇编语言程序设计汇
12、编语言的伪指令、汇编语言的伪指令、运算符运算符汇编语言程序的结构汇编语言程序的结构汇编语言程序的上机过程汇编语言程序的上机过程基本程序设计基本程序设计21汇编语言源程序汇编语言源程序:用汇编语言编写的程序用汇编语言编写的程序,源程序源程序.汇编汇编:相当于一个相当于一个”翻译员翻译员”,自动的把汇自动的把汇编语言程序翻译成机器语言编语言程序翻译成机器语言,该过程称为汇该过程称为汇编编.汇编程序汇编程序:完成汇编任务的程序完成汇编任务的程序.目标程序目标程序:相应形成的机器语言程序相应形成的机器语言程序.MyProg.asmMyProg.objMyProg.exe编辑程序汇编程序连接程序234.
13、1 汇编语言程序格式汇编语言程序格式指令指令使使CPU产生动作、并在程序执行产生动作、并在程序执行时才处理的语句时才处理的语句.指令指令和和伪指令伪指令伪指令伪指令不产生不产生CPU动作、在程序执行动作、在程序执行前由汇编程序处理的说明性语句前由汇编程序处理的说明性语句.伪指令与具体的处理器类型无关,但与汇伪指令与具体的处理器类型无关,但与汇编程序的版本有关编程序的版本有关244.1 汇编语言的语句格式汇编语言的语句格式指令性语句指令性语句由指令构成的语句,由指令构成的语句,是计算机可是计算机可是计算机可是计算机可执行的执行的执行的执行的,出现在程序的代码段中出现在程序的代码段中每个语句由每个
14、语句由1 14 4个部分组成,格式为:个部分组成,格式为:其中:其中:用方括号括起来的部分,可以有也可以没有;用方括号括起来的部分,可以有也可以没有;每部分之间用空格每部分之间用空格(至少一个)分开;至少一个)分开;一行最多可有一行最多可有132个字符。个字符。标号标号:指令助记符指令助记符 操作数操作数 ,操作数操作数 ;注注释释 (1)(2)(3)(4)START:MOV AX,DATA;数据段基址数据段基址AX25标号标号 由下列字符组成:由下列字符组成:大小写字母;数字大小写字母;数字09;某些;某些特殊字符(特殊字符(、_、?、$)。)。标号的有效长度是标号的有效长度是31。第一个字
15、符不能是数字,第一个字符不能是数字,“?”不能单独作为标不能单独作为标号。号。标号:标号:START MY_PROGRAM有效有效标号:标号:MAIN%1BETA无效无效26指示性语句指示性语句指示性语句指示性语句由伪指令构成的语句,由伪指令构成的语句,不能执不能执不能执不能执行行行行,用来定义变量、分配存储单元、指示程序开用来定义变量、分配存储单元、指示程序开用来定义变量、分配存储单元、指示程序开用来定义变量、分配存储单元、指示程序开始和结束等。始和结束等。始和结束等。始和结束等。名字名字 伪指令伪指令伪指令伪指令 操作数操作数;注释注释区别区别 在形式上:带不带在形式上:带不带冒号冒号,是
16、否可转向它是否可转向它.在本质上:汇编时能否形成在本质上:汇编时能否形成对应的机器码对应的机器码.注:当标识符注:当标识符后跟冒号后跟冒号时,表示是标号,它代表该时,表示是标号,它代表该行指令的行指令的起始地址起始地址;当标识符后;当标识符后不带冒号不带冒号时,表示时,表示变量名、段名或过程名变量名、段名或过程名;伪指令前的名字不加冒号。;伪指令前的名字不加冒号。27汇编语言语句实例汇编语言语句实例MOV CX,0 ;MOV CX,0 ;传送指令,具有传送指令,具有2 2个操作数个操作数DELAY:DELAY:NOP ;NOP ;带有标号带有标号LOOP DELAY LOOP DELAY;标号
17、标号delay作作循环指令的操作数循环指令的操作数标号标号是反映指令位置(逻辑地址)的标识符,用冒号分隔是反映指令位置(逻辑地址)的标识符,用冒号分隔名字名字是反映伪指令位置(逻辑地址)和属性的标识符,后跟是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有冒号空格或制表符分隔,没有冒号BUFFERBUFFER DB 1,2,3,4,5,6,7DB 1,2,3,4,5,6,7;数据定义伪指令,在主存中开辟数据定义伪指令,在主存中开辟7 7个连续的字个连续的字节单元,初值依次为节单元,初值依次为1 17 7,BUFFERBUFFER表示首地址表示首地址304.2 伪指令伪指令常
18、用的伪指令有常用的伪指令有:符号定义伪指令符号定义伪指令数据定义伪指令数据定义伪指令段定义伪指令段定义伪指令过程定义伪指令过程定义伪指令结束伪指令结束伪指令311.1.符号定义伪指令符号定义伪指令EQUEQU(EquateEquate)格式:格式:EQU 功能:给符号名赋值。名字根据标号规则定义,表达式功能:给符号名赋值。名字根据标号规则定义,表达式应该是可以计算得出一个具体值。应该是可以计算得出一个具体值。注意:注意:用用EQU定义的符号,不能重新再定义,除定义的符号,不能重新再定义,除非用非用PURGE伪指令解除。伪指令解除。如果在表达式中用了其他符号,必须实现定义。如果在表达式中用了其他
19、符号,必须实现定义。例:例:PORT EQU 88H;定义符号定义符号PORT代表代表88H DATA EQU PORT+2;定义符号定义符号DATA代表代表PORT+232等号(赋值)伪指令等号(赋值)伪指令格式:格式:=功能:与功能:与EQU类似,唯一的区别是类似,唯一的区别是“=”可以随时可以随时对符号名赋新值,而不必使用对符号名赋新值,而不必使用PURGE伪指令。伪指令。例:例:PORT=88H DATA=PORT+2;定义符号定义符号PORT代表代表88H;定义符号定义符号DATA代表代表PORT+233变量是内存中数据区的名字,又叫变量定义伪指令。变量是内存中数据区的名字,又叫变量
20、定义伪指令。格式为:格式为:变量名变量名 伪指令助记符伪指令助记符 操作数操作数 ;注释;注释变量名变量名后面无冒号,可有可无。后面无冒号,可有可无。2.2.数据定义伪指令数据定义伪指令功能:分配存贮单元并赋初值。操作数操作数可以是常数或表达式,相当于可以是常数或表达式,相当于初值初值。伪指令助记符伪指令助记符有如下几种:有如下几种:DBDB定义字节定义字节 (Define Byte)(Define Byte)DWDW定义字定义字(Define Word)(Define Word)DDDD定义双字定义双字(Define Doubleword)34P DB 10,4,10HP1 DW 100P2
21、 DD 320,0FFFDH P+0 0AHP+0 0AH +1 04H +1 04H +2 10H +2 10H P1+0P1+0 64H64H +1 00H +1 00H P2+0 3CH P2+0 3CH +1 00 +1 00 +2 00 +2 00 +3 00 +3 00 +4 0FDH +4 0FDH +5 0FFH +5 0FFH +6 00 +6 00 +7 00 +7 0010410H100600FFFDH例例135例例2 2:定义字符串:定义字符串MESS DB MESS DB HELLOHELLOMM MM DW DW ABABMESS+0 H +1 E +2 L +3
22、L +4 O MM B A47H45H4CH4CH4FH42H41H注意下面的不同:注意下面的不同:DB AB DB AB DW ABDW AB 4242BB4141AA 41 41 AA 42 42 BB高地址高地址低地址低地址36?保留存储空间保留存储空间,但不存入数据但不存入数据.例例3 3:ABCABCDBDB0,1,?,?,?0,1,?,?,?LPILPIDWDW?,54,?,54,?00000010136360000ABCLPI1?5454?表示初值不确定表示初值不确定 即未赋初值即未赋初值37复制操作复制操作DUP(duplicate)DUP的格式为:重复次数 DUP(重复参数)
23、如如:DO-2 DB 2 DUP(0,1,2,?)与与 DO-2 DB 0,1,2,?,0,1,2,?等价等价38字节变量的应用字节变量的应用datadatasegmentsegment;数据段数据段X Xdb a,-5db a,-5db 2 dup(100),?db 2 dup(100),?Y Ydb ABCdb ABCdatadataendsendsmovmov al,X al,Xdecdec X+1 X+1movmov Y,al Y,al;此处此处X X表示它的第表示它的第1 1个数据,故个数据,故ALaALa;对对X X为始的第为始的第2 2个数据减个数据减1 1,故成为,故成为-6-
24、6;Y;Y这个字符串成为这个字符串成为 aBCaBC 40练习:数据定义伪指令练习:数据定义伪指令例:例:DATA SEGMENTDATA SEGMENTADB 1020STR1DB HI OK!,0DH,0AH,$DATA1DW 2 DUP(0)SUMDW?TABLEDB 2 DUP(3 DUP (3),7)DATA ENDSDATA ENDS问:(1)若执行下列指令后,(AX)=?(AX)=?LEA BX,TABLE LEA BX,TABLE MOV AX,BX+3 MOV AX,BX+3 (2)变量 A,STR1,DATA1,SUM,TABLE A,STR1,DATA1,SUM,TABL
25、E 的 EAEA?410000DATA1$0AH0DH!KO20HIHSTR1C8HATABLESUM37333733DATA SEGMENTADB 1020STR1 DB HI OK!,0DH,0AH,$DATA1DW 2 DUP(0)SUM DW?TABLE DB 2 DUP(3 DUP (3),7)DATA ENDSLEA BX,TABLELEA BX,TABLEMOV AX,BX+3MOV AX,BX+3变量 A,STR1,DATA1,SUM A,STR1,DATA1,SUM 的 EAEA?;(AX)=0307H;(AX)=0307H为 0 0,1 1,1010,14 14 423.3
26、.段定义伪指令段定义伪指令 因因8086/8088 CPU8086/8088 CPU的存储器是分段的的存储器是分段的,这就需要有段这就需要有段定义语句。定义语句。与段有关的伪指令主要有:与段有关的伪指令主要有:SEGMENTSEGMENT、ENDSENDS、ASSUMEASSUME 段定义伪指令的格式如下:段定义伪指令的格式如下:段名段名 SEGMENT SEGMENT 定位类型定位类型 组合类型组合类型 类别类别 段名段名 ENDSENDS方括号中为可选项,规定了逻辑段的一些其他特性方括号中为可选项,规定了逻辑段的一些其他特性方括号中为可选项,规定了逻辑段的一些其他特性方括号中为可选项,规定
27、了逻辑段的一些其他特性44 这两个伪指令总是这两个伪指令总是成对成对出现,二者前面的出现,二者前面的段名段名一致。二者之间的删节部分,对一致。二者之间的删节部分,对数据段数据段、附加段附加段及及堆栈段堆栈段,一般是,一般是符号符号、变量定义等伪指令变量定义等伪指令。对。对于于代码段代码段则是则是指令指令及及伪指令伪指令。SEGMENT 和和 ENDS例如:例如:DATA SEGMENT DATA ENDS 此外,还必须明确段和段寄存器的关系,这可此外,还必须明确段和段寄存器的关系,这可由由ASSUMEASSUME语句来实现。语句来实现。DW 20DUP(?)45由于由于ASSUME伪指令只指明
28、某一个段地址应存于哪伪指令只指明某一个段地址应存于哪一个段寄存器中,并没有包含将段地址送入该寄存一个段寄存器中,并没有包含将段地址送入该寄存器的操作。因此要将器的操作。因此要将真实段地址装入段寄存器还需真实段地址装入段寄存器还需用汇编指令来实现用汇编指令来实现。如:如:CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK MOV AX,DATA ;DATA段值送段值送AXMOV DS,AX ;AX内容送内容送DS,DS才有实际段值才有实际段值 CODE ENDS ASSUME 段寄存器:段名段寄存器:段名,段寄存器名:段名段寄存器名:段名,.4.4.段寄存器说
29、明伪指令段寄存器说明伪指令功能:功能:指明某一个段地址应存于哪一个段寄存器中指明某一个段地址应存于哪一个段寄存器中475.5.汇编结束伪指令汇编结束伪指令其其中中可可选选的的标标号号用用于于指指定定程程序序开开始始执执行行点点,连连接接程程序序将据此设置将据此设置CS:IP值值例如:例如:END START ;表明该程序的启动地址为表明该程序的启动地址为STARTl格式:格式:END 标号标号l功功能能:该该语语句句标标志志整整个个程程序序的的结结束束,是是源源程程序序的最后一条语句。的最后一条语句。l当当汇汇编编程程序序对对源源程程序序进进行行汇汇编编过过程程中中,如如遇遇到到END,END
30、,得知源程序到此结束。得知源程序到此结束。516.运算符(常用)运算符(常用)地址操作符地址操作符SEG ;取段址取段址OFFSET ;取偏址取偏址类型操作符类型操作符PTR;定类型定类型52地址操作符地址操作符l取得名字或标号的段地址和偏移地址两个属性取得名字或标号的段地址和偏移地址两个属性 将括起的表达式作为存储器地址将括起的表达式作为存储器地址:采用指定的段地址寄存器采用指定的段地址寄存器OFFSET OFFSET 名字名字/标号标号返回名字或标号的偏移地址返回名字或标号的偏移地址SEG SEG 名字名字/标号标号返回名字或标号的段地址返回名字或标号的段地址例:例:FIVE EQU 5M
31、OV AX,FIVE;AX=5MOV AX,SEG FIVE;AX=5 所在地址的所在地址的段地址段地址MOV AX,OFFSET FIVE;AX=5 所在地址的所在地址的偏移量地址偏移量地址 53datasegmentarraydb 45,45H,36,9dataends mov ax,seg array mov ds,ax mov bx,offset array mov cl,array+2地址操作符实例地址操作符实例;等价于等价于 mov ax,data;等价于等价于 lea bx,array bx=0;等效于等效于 mov cl,array2 cl=36;等效于等效于 mov cl,b
32、x+2 54PTRPTR操作符操作符PTRPTR操作符使名字或标号具有指定的类型操作符使名字或标号具有指定的类型类型名:类型名:BYTE/WORD/DWORD或或 NEAR/FARmov ax,word ptr array ;array是一个字变量是一个字变量jmp far ptr n_label ;n_label是一个标号是一个标号使用使用PTRPTR操作符,可以操作符,可以临时临时改变名字或标号的类型改变名字或标号的类型类型名类型名 PTR 名字名字/标号标号56一般来说,一个完整的汇编源程序由三个段组成,一般来说,一个完整的汇编源程序由三个段组成,即堆栈段、数据段和代码段。即堆栈段、数据
33、段和代码段。堆栈段:在内存中建立一个堆栈区域,以便在中堆栈段:在内存中建立一个堆栈区域,以便在中断、子程序调用时使用。断、子程序调用时使用。注意堆栈溢出注意堆栈溢出。代码段:存放要执行的指令。代码段:存放要执行的指令。数据段:存放常数、变量等程序中需要操作的数据。数据段:存放常数、变量等程序中需要操作的数据。数据段应放在代码段之前数据段应放在代码段之前。4.2 汇编语言程序的结构汇编语言程序的结构57一个完整的汇编程序一个完整的汇编程序DATA SEGMENT .;数据段内定义各类程序执行需要的相关数据数据段内定义各类程序执行需要的相关数据DATA ENDSSTACK SEGMENT .;根据
34、程序的具体需要定义堆栈段,供程序执根据程序的具体需要定义堆栈段,供程序执行行 ;过程中临时保留数据用;过程中临时保留数据用STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOVAX,DATA MOV DS,AX .;完成具体操作的指令序列完成具体操作的指令序列CODE ENDS END START58 DATA1 SEGMENT;数据段数据段 X DB 05H Y DB 04H Z DB?DATA1 ENDSCODE1 SEGMENT;代码段代码段 ASSUME CS:CODE1,DS:DATA1START:MOV AX
35、,DATA1;数据段基址数据段基址AX MOV DS,AX;AX DS MOV AL,X;内存单元内存单元X的数据的数据AL ADD AL,Y;内存单元内存单元Y的数据的数据+ALAL MOV Z,AL;求和结果求和结果内存单元内存单元Z MOV AH,4CH;送功能号送功能号 INT 21H;系统功能调用,返回操作系统系统功能调用,返回操作系统 CODE1 ENDS END START例、实现例、实现X+YZ59 用汇编语言编写的程序称为源程序,常用的汇编用汇编语言编写的程序称为源程序,常用的汇编程序有程序有ASM和宏汇编和宏汇编MASM。汇编语言程序要实现在机器上运行,必须完成以下汇编语言程序要实现在机器上运行,必须完成以下几个步骤几个步骤:1、编辑程序编辑程序2、汇编程序汇编程序3、连接程序连接程序4、运行调试程序运行调试程序4.3 汇编语言程序的上机过程汇编语言程序的上机过程源程序源程序.asm可执行文件可执行文件.exe目标模块目标模块.obj文本编辑器文本编辑器汇编程序汇编程序MASM连接程序连接程序LINK调试程序调试程序66用文件编辑工具编写源程序用文件编辑工具编写源程序用用MASM汇编源程序汇编源程序有语法错误?有语法错误?用用LINK连接目标代码文件连接目标代码文件执行执行EXE文件文件运行结果有错误?运行结果有错误?有连接错误?有连接错误?YYYNNN71