【教学课件】第六章子程序设计.ppt

上传人:wuy****n92 文档编号:69884513 上传时间:2023-01-10 格式:PPT 页数:69 大小:423.47KB
返回 下载 相关 举报
【教学课件】第六章子程序设计.ppt_第1页
第1页 / 共69页
【教学课件】第六章子程序设计.ppt_第2页
第2页 / 共69页
点击查看更多>>
资源描述

《【教学课件】第六章子程序设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第六章子程序设计.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社第六章 子程序设计一、子程序的定义二、子程序的结构形式三、子程序的设计和调用四、子程序的参数传递方法五、子程序的嵌套和递归调用六、子程序的设计举例七、多模块程序设计八、汇编语言和高级语言的混合编程第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社一、子程序的定义1、子程序的概念和特点2、子程序的定义3、子程序的调用和返回第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社1、子程序的概念和特点子程序:把在程序中多次出现,具有独立功能的程序段写成程序模块,该模块可被多次调用,称之为子程序。特点:

2、可重复使用(调用)具有通用性(可通过入口参数实现)可浮动性(存放位置灵活)可递归性和可重入性第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社子子程程序序的的定定义义是是由由过过程程定定义义伪伪指指令令PROCPROC和和ENDPENDP来完成的。其格式如下:来完成的。其格式如下:过程名过程名 PROCPROC NEAR/FAR NEAR/FAR 过程名过程名 ENDPENDP其其中中PROCPROC表表示示过过程程定定义义开开始始,ENDPENDP表表示示过过程程定定义结束。过程名是过程入口地址的符号表示。义结束。过程名是过程入口地址的符号表示。一般过程名同标号一样,具有三

3、种属性,一般过程名同标号一样,具有三种属性,即段即段属性、偏移地址属性以及类型属性。属性、偏移地址属性以及类型属性。2、子程序的定义、子程序的定义第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社3、子程序的调用和返回v 调用段内直接调用格式:CALL 子程序名功能:将子程序返回地址(断点)入栈 SPSP-2 (SP)IP,并转到子程序入口地址去执行子程序。IPIP+(子程序入口地址与CALL之间的偏移量)第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例:例:段内直接调用,显示字符段内直接调用,显示字符PCODE SEGMENTASSUME CS:COD

4、ESTART:CALL DISPMOV AH,4CHINT 21HDISP PROCMOV DL,PMOV AH,2INT 21HRETDISP ENDPCODE ENDS END START第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社段内间接调用格式:CALL DST 或 CALL WORD PTR DST(DST为寄存器或字存储器)功能:断点入栈,转子程序执行。SPSP-2 (SP)IP IP(EA)例:CALL BX CALL WORD PTR SI第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社段间直接调用格式:CALL FAR PTR DS

5、T(DST为子程序名)功能:段点(CS和IP)入栈,并转到子程序处执行。SPSP-2 (SP)CSSPSP-2 (SP)IPIP子程序入口地址的偏移地址CS子程序入口地址的段地址第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例:例:段内间接调用,显示一个字符段内间接调用,显示一个字符PCODE1 SEGMENTASSUME CS:CODE1START:CALL DISPMOV AH,4CHINT 21HCODE1 ENDSCODE2 SEGMENTASSUME CS:CODE2DISP PROC FARMOV DL,PMOV AH,2 INT 21HRETDISP END

6、PCODE2 ENDSEND START第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社段间间接调用例:CALL DWORD PTR BX CALL DWORD PTR ADDRv 返回指令格式:RET功能:返回堆栈中存放的断点,并返回到CALL指令的后续指令继续执行。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社二、子程序的结构形式v子程序设计考虑四部分:保护现场(保存寄存器原有的内容)、处理部分、恢复现场(恢复寄存器原有的内容)、子程序的返回。“现场”:子程序执行中要用到的寄存器。保护现场:一般通过压栈实现(进入子程序前)恢复现场:一般通过出栈实现

7、(返回子程序前)第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社1 1、子程序的调用方法说明、子程序的调用方法说明(1)子程序名:供调用时使用(2)入口参数:子程序执行需要的数据(3)出口参数(输出参数):说明子程序执行后结果存放在何处。(4)占用寄存器:说明子程序执行时需要使用那些寄存器。那些改变,那些不变。注意:作为存放出口参数用的寄存器不能保护。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社2信息的保护与恢复信息的保护与恢复 例如:若子程序PROG中改变了寄存器AX,BX,CX,DX的值,则可采用如下方法保护和恢复现场。PROGPROCPUSH

8、AX PUSH BX PUSH CX;保护现场PUSH DX 第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社 POPDX POPCX POPBX;恢复现场 POPAX RET ;返回断点处PROCENDP第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社三、子程序的设计和调用举例例6-2 多字节二进制数加法子程序;子程序名:MBTADD;功能:两个多字节二进制相加;入口参数:SI,DI分别存放两个数的首地址,BX存放和的首地址,CX存放多字节数的长度。;出口参数:BX存放和的首地址第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社MBT

9、ADD PROC PUSH SIPUSH DIPUSH BXPUSH AXPUSH CXCLC ;CF=0保护现场第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社NEXT:MOV AL,SI ADC AL,DI MOV BX,AL INC SI INC DI INC BX LOOP NEXT POP CX POP AX POP BX POP DI POP SIRETMBTADD ENDP返返回回现现场场第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例:例:求最大公约数子程序。求最大公约数子程序。入口参数:入口参数:AX,BX出口参数:出口参数:CXMC

10、DST PROCPUSH AXPUSH BXPUSH DXAGAIN:XOR DX,DXDIV BXAND DX,DXJZ EXIT MOV AX,BX MOV BX,DX JMP AGAINEXIT:MOV CX,BXPOP DXPOP BXPOP AXRETMCDST ENDP第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例例6-3:将在将在BUFFERBUFFER为首地址的缓冲区的一个字符串中的所为首地址的缓冲区的一个字符串中的所有大写字母都转换成小写字母,并在屏幕显示出来。有大写字母都转换成小写字母,并在屏幕显示出来。程序清单如下:DATASEGMENTORG20

11、0HSTRINGDB ABsDFAIViop STRLENEQU$-STRING ;字符串长度DATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA;设置数据段MOV DS,AX第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社 MOV SI,OFFSET STRING;取串首地址赋给SI MOV CX,STRLEN;串长送CXCALL STRDTX;调用子程序MOV DX,OFFSET STRING;打印转换后的字符串MOV AH,9INT 21HMOV AH,4CHINT 21H第第6章章 IBM PC 80

12、X86汇编语言程序设计 冶金工业出版社;大小写转换子程序 STRDTXPROCNEAR PUSH AX PUSH CX PUSH SI NEXT:MOV AL,SI CMPCX,0 JZEXIT CMPAL,A JBNEXT1 CMPAL,Z JANEXT1 ADDAL,20H MOV SI,AL NEXT1:INC SI JMPNEXT EXIT:POPSI POPCX POPAX RETSTRDTXENDP CODEENDS ENDSTART第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社四、主程序与子程序参数传递方式n通过寄存器传递参数n通过堆栈传递参数n通过存储单元

13、传递参数第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社1、通过寄存器传递参数 主程序将原始参数放入约定的寄存器,然后调用子程序;子程序把处理结果放入约定的寄存器,并返回主程序。例6-5数据块传送子程序分析:入口参数:源操作块首地址、目的块首地址和块长度。分别用SI、DI和CX来传递参数。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社DATA SEGMENTBLOCK1 DB 23H,45H,13H,2FH,1AH,94HLENS EQU$-BLOCK1BLOCK2 DB LENS DUP(?)DATA ENDSCODE SEGMENTASSUME C

14、S:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX 第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社 MOV SI,OFFSET BLOCK1 MOV DI,OFFSET BLOCK2 MOV CX,LENS CALL MOVSTOK MOV AH,4CH INT 21HMOVSTOK PROC NEAR PUSH AXNEXT:MOV AL,SI MOV DI,AL INC SI INC DI LOOP NEXT POP AX RETMOVSTOK ENDPCODE ENDSEND START第第6章章 IBM PC 80X86汇编语言程序

15、设计 冶金工业出版社 例:在ADRM和ADRN单元中分别存放两个正整数M、N,求最大公约数,并将结果存入RESULT单元中。入口参数:AX,BX出口参数:CX算法:(1)判断如MN,转(2),否则交换M、N(2)M/N得到余数R(3)判断若R=0,则N为最大公约数,否则(4)更新被除数和除数,MN,NR,转(2)执行。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社2、通过堆栈传递参数 主程序的入口参数用堆栈保存,不占用存储单元,在子程序中弹出入口参数,执行完子程序后,释放堆栈空间。例6-5用堆栈传递参数,实现数据块传送。入口参数:源数据块首地址,目的数据块首地址及数据块长

16、度。均用寄存器AX把3个参数压栈。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社DATA SEGMENTBLOCK1 DB 23H,45H,13H,2FH,1AH,94HLENS EQU$-SOUCE BLOCK2 DB LENS DUP(?)(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX 第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社MOV AX,OFFSET BLOCK1PUSH AXMOV AX,OFFSET BLOCK2PUSH AXMOV A

17、X,LENSPUSH AXCALL MOVSTOKMOV AH,4CHINT 21H第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社MOVSTOK PROC NEARPUSH SI PUSH DI PUSH CXPUSH BP MOV BP,SPMOV SI,BP+14MOV SI,BP+14 MOV DI,BP+12MOV DI,BP+12 MOV CX,BP+10MOV CX,BP+10 LOP1:MOV AL,SI MOV DI,ALINC SIINC DILOOP LOP1 RETMOVSTOK ENDPCODE ENDSEND START第第6章章 IBM PC

18、80X86汇编语言程序设计 冶金工业出版社例:利用堆栈传递参数,实现对2个已定义数组分别求和。主程序与子程序不在同一代码段中。入口参数:数组的首地址和数组长度。使用寄存器AX将入口参数压栈。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社DATA SEGMENTARYA DB 06H,33H,0AH,88H,13HSUMA DW?ARYB DB 9FH,97H,34H,22H,33,13HSUMB DW?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX第第6章章 IBM PC 80X

19、86汇编语言程序设计 冶金工业出版社 MOV AX,SUMA-ARYAPUSH AXMOV AX,OFFSET ARYAPUSH AXCALL SUMMOV AX,SUMB-ARYBPUSH AXMOV AX,OFFSET ARYBPUSH AXCALL SUM MOV AH,4CHINT 21HCODE ENDS第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社PROCE SEGMENTASSUME CS:PROCE,DS:DATASUM PROC FARPUSH AXPUSH BXPUSH CXPUSH BPMOV BP,SPPUSHFMOV CX,BP+14MOV BX

20、,BP+12第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社MOV AX,0LOP1:ADD AL,BXADC AH,0INC BXLOOP LOP1MOV BX,AXPOPFPOP BPPOP CXPOP BXPOP AX RET 4SUM ENDPPROCE ENDSEND START第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社3、用存储单元传递参数 主程序中入口参数送入存储单元,子程序中取出入口参数进行处理,执行结果存入存储单元。例例6.76.7 同例同例6.5 6.5 用存储器参数传递法用存储器参数传递法编写程序编写程序 第第6章章 IBM

21、PC 80X86汇编语言程序设计 冶金工业出版社DATA SEGMENTBLOCK1 DB 23H,45H,13H,2FH,1AH,94HLENS EQU$-SOUCE BLOCK2 DB LENS DUP(?)(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX 第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社 XOR SI,SI XOR DI,DI MOV CX,LENS CALL MOVSTOK MOV AH,4CH INT 21HMOVSTOK PROC NEAR PUSH

22、 AXNEXT:MOV AL,BLOCK1SI MOV BLOCK2DI,AL INC SI INC DI LOOP NEXT POP AX RETMOVSTOK ENDPCODE ENDSEND START第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社五、子程序的嵌套和递归调用嵌套:子程序中再调用其它子程序递归:子程序体中调用它本身,一般用于数学上函数的递归定义。1、子程序的嵌套调用嵌套与递归的共同之处就是都要用到堆栈操作,用于保护断点。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社主程序:CALL SUB1 (断点1:)HLTSUB1:CALL

23、SUB2(断点2:)RETSUB2:RET子程序:子程序:v子程序的嵌套调用子程序的嵌套调用第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例:找出BUF区存放的若干字节的最小值。并以十六进制形式显示。程序利用嵌套实现程序利用嵌套实现DISP 显示一位十六进制数,被显示的内容存放显示一位十六进制数,被显示的内容存放在在DL低低4位。位。SEARCH 在在BUF区中搜索最小无符号数区中搜索最小无符号数入口参数:入口参数:SI 被搜索数据区的首地址。被搜索数据区的首地址。CX 存放数据的个数。存放数据的个数。出口参数出口参数:DL中存放最小值中存放最小值第第6章章 IBM PC

24、 80X86汇编语言程序设计 冶金工业出版社 CALL SEARCH SEARCH PROC CALL DISP CALL DISP RETSEARCH ENDPDISP PROCCMP DL,9JBE DISP1ADD DL,7DISP1:ADD DL,30HMOV AH,2INT 21HRETDISP ENDPCODE ENDSEND START第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社子程序的递归调用例例6-10:求求N的阶乘的阶乘算法:算法:=1(N=1)N!=N*(N-1)!()!(N1)入口参数:N的值,利用寄存器AX出口参数:阶乘值,用寄存器DX第第6章

25、章 IBM PC 80X86汇编语言程序设计 冶金工业出版社第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社DATA SEGMENTN DW 6RESU DW?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,NCALL FACTMOV RESU,DX第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社MOV AH,4CHINT 21HFACT PROC CMP AX,0JNE NEXTMOV DX,1JMP EXITNEXT:PUSH AXDEC AXCA

26、LL FACTPOP AXMUL DLMOV DX,AXEXIT:RETFACT ENDPCODE ENDSEND START第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社六、子程序设计举例 汇编语言在源程序的编写时,常用到输入和输出,当丛键盘输入一个数据时,输入设备实际是将数据(二进制、十六进制或十进制)的ASCII码输入计算机。而在输出时,不管是2、16或10进制的输出,都需要将计算机内部的二进制转换成相应进制的各位的ASCII码。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社v标准输出标准输出STDOUT PROCPUSH DXMOV DL,A

27、LMOV AH,2INT 21HPOP DXRETSTDOUT ENDP入口参数:入口参数:输出字符输出字符ASCII码送码送AL第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社输入输出子程序输入输出子程序v标准输入标准输入STDIN PROCSTDIN PROCMOV AHMOV AH,1 1INT 21HINT 21HRETRETSTDIN ENDPSTDIN ENDP入口参数:入口参数:等待输入字符等待输入字符出口参数:出口参数:输入字符的输入字符的ASCIIASCII码存入码存入ALAL寄存器寄存器第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社

28、例1:将ASCII 码表示的16进制数,转换成1个字的二进制数。入口参数:从输入设备输入的一个十六进制数。出口参数:一个字的二进制数,在DX寄存器中。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社HEX16IN PROCPUSH CXPUSH AXMOV DX,0HEX1:CALL STDINSUB AL,30HJL HEX3CMP AL,9JLE HEX2SUB AL,7CMP AL,0AHJL HEX3CMP AL,0FHJG HEX3HEX2:CBWMOV CL,4SAL DX,CLADD DX,AXJMP HEX1HEX3:POP AXPOP CX RET第第6章

29、章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例2 将二进制数转换成16进制数的ASCII码输出。入口参数:16位二进制数存放在BX中出口参数:以十六进制输出这个二进制数。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社HEX16OUT PROCPUSH CXPUSH AXMOV CX,4HEX1:PUSH CXMOV CL,4ROL BX,CLMOV AL,BLAND AL,0FHCMP AL,0AH JB HEX2ADD AL,7HEX2:ADD AL,30HCALL STDOUTPOP CXLOOP HEX1POP AXPOP CXRETHEX16OUT

30、 ENDP第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社七、多模块程序设计 多模块程序结果是一种在设计大、中程序时选用的程序结构格式。在程序设计中可以根据需要,将程序划分成多个模块(MODULE)。每个模块都是一个可独立汇编的源程序文件。源程序各模块编写好后,首先分别生成相应的.OBJ文件,再将这些目标文件进行连接,生成一个可执行文件。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社vPUBLIC伪指令格式:PUBLIC 符号,符号功能:说明其后的符号是全局符号。全局符号能被其他模块引用。vEXTRN伪指令格式:EXTRN 符号:类型,符号:类型功能:

31、说明在本模块中需要引用的、由其他模块定义的符号,即外部符号。1、多模块程序设计中,全局符号与外部符号的说明。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社2、多模块程序文件的连接操作若一个程序的多个模块,则每个模块都是一个独立的.ASM文件,通过汇编得到几个相应的目标文件(.OBJ)文件后,再用连接程序将这几个目标文件连接成一个可执行文件(.EXE)。连接时用“+”来连接各个目标文件。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例:多模块程序设计。(GETIN.ASM和GETOUT.ASM)其中模块GETIN.ASM是从键盘输入一个字符串至BUF缓

32、冲区,调用GETOUT.ASM子模块,GETOUT.ASM子模块用于显示BUFF的内容。多模块程序设计中,只有主模块中需要返回DOS语句,子模块不需要。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社public buff extrn disp:far extrn cr:fardata segmentBuf db 10,?,10 dup(?),$data endscode segment assume cs:code,ds:data start:mov ax,data mov ds,ax lea dx,buffmov ah,10mov ah,10int 21hint 21h

33、 call far ptr crcall far ptr cr call far ptr dispcall far ptr disp mov ah,4chmov ah,4chint 21hint 21hcode endscode endsend startend start模块GETIN.ASM模块GETOUT.ASMextrn buff:byte public disp public crcode segment assume cs:codedisp proc far mov ax,seg buff mov es,ax lea dx,es:buff+2 mov ah,9 int 21h re

34、tdisp endpcr proc farmov dl,13hmov ah,2int 21hmov dl,10hmov ah,2int 21h retcr endpcode endsend第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社八、汇编语言和高级语言的混合编程v调用协议vTC与汇编的模块连接法v嵌入式汇编第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社1、TC调用汇编语言TC与汇编模块连接的约定规则如下:(1)存储器使用约定:TC应与汇编语言采用相同的存储模式,以便编译产生正确的可执行文件。(2)汇编语言中被TC语言所引用的子程序或变量名前面需加

35、上下划线“_”(3)TC对所调用的汇编语言的子程序、变量等采用EXTERN说明;在汇编语言中需将被调用的子程序或变量用PUBLIC操作符定义。v调用协议第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社(4)汇编语言与高级语言程序间的参数传递,一般采用堆栈来传递,即调用程序将参数依次压入堆栈中,被调程序再从堆栈中依次弹出参数作为操作数使用。(5)汇编子程序在执行完,返回值是按如下规则保存的:如果返回值为字节数据,送AL寄存器;如果返回值为字数据,送AX寄存器;如果返回值为双字数据,送DX:AX寄存器(其中DX为高字单元)。(6)汇编程序和TC程序各自独立汇编成OBJ文件,在T

36、C下,将两个OBJ文件连接成EXE可执行文件。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社2 2、汇编语言调用、汇编语言调用TCTC(1)首先应在TC程序中说明汇编语言所引用的变量或程序是全局的。(2)在汇编语言中用EXTRN伪指令声明所引用的TC子函数和变量。(3)按照C语言的调用协议将参数压栈。(4)汇编语言的调用用CALL指令。(5)返回值从AL、AX或DX:AX中获得。(6)TC程序和汇编程序各自独立编译生成OBJ文件。在汇编语言下用TASM/MASM生成可执行EXE文件。第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社vTC与汇编的模块连接

37、法与汇编的模块连接法例例6.136.13 使用C语言调用汇编子程序,实现字符串显示。;汇编语言子程序 hello.asm .model small ;采用小型存储模式 .data mesg db Hello,world!$.code public _display _display proc ;过程名加上下划线 mov ah,9 ;小型模式不必设置DS mov dx,offset mesgint 21h ret_display endp end第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社/*C语言程序display.c*/extern void display(void

38、);/*说明display是外部函数*/main()display();编译连接时在DOS提示符下输入如下命令:tasm hello.asm ;汇编hello.asm生成目标文件hello.objtcc -ms c display.c ;按小模式编译display.c为display.objtlink libc0s display hello,display,libcs ;连接目标文件为display.exe 第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社v嵌入式汇编嵌入式汇编 嵌入式汇编也称行内汇编,指的是在C语言中直接使用汇编语言语句,它的特点是简洁直观。嵌入汇编语言

39、的语法如下:asm 注意:这里的分号;不是汇编语言中起注释作用的分号,而是作为语句的分隔符。若要嵌入一组汇编语句,则需要用括号“”第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社例例6.166.16 在C语言源程序中嵌入汇编语言语句实现赋值语句A=A+B+C,其中:A、B、C都是整型变量。/*程序名为ltadd.c*/includeint add(int A,int B,int C)asm push ax/*实现整型变量A=A+B+C*/asm movax,A asm addax,B asm addax,C asm movA,ax asm popax 第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社main()int A,B,C;A=4;B=11;C=5;print(The result is%d,add(A,B,C);汇编时键入Tcc -b ms c ltadd在连接时键入Tlink libc0s ltadd,ltadd,libcs从而得到ltadd.exe文件第第6章章 IBM PC 80X86汇编语言程序设计 冶金工业出版社

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁