汇编语言第六章子程序结构.ppt

上传人:wuy****n92 文档编号:73454640 上传时间:2023-02-19 格式:PPT 页数:44 大小:249.63KB
返回 下载 相关 举报
汇编语言第六章子程序结构.ppt_第1页
第1页 / 共44页
汇编语言第六章子程序结构.ppt_第2页
第2页 / 共44页
点击查看更多>>
资源描述

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

1、 在在程程序序设设计计中中,可可以以发发现现一一些些多多次次无无规规律律重重复复的的程程序序段段或或语语句句序序列列。解解决决此此类类问问题题一一个个行行之之有有效效的的方方法法就就是是将将它它们们设设计计成成可可供供反反复复调调用用的的独独立立的的子子程程序序结结构构,以以便便在在需需要要时时调用。在汇编语言中调用。在汇编语言中,子程序又称过程子程序又称过程子程序又称过程子程序又称过程。调用子程序的程序称为主调程序或主程序调用子程序的程序称为主调程序或主程序调用子程序的程序称为主调程序或主程序调用子程序的程序称为主调程序或主程序。第第6章章 子程序结构子程序结构2/18/20231ch6子程

2、序的基本结构包括以下几个部分:子程序的基本结构包括以下几个部分:(1 1 1 1)子程序定义)子程序定义)子程序定义)子程序定义 (2 2 2 2)保护现场和恢复现场)保护现场和恢复现场)保护现场和恢复现场)保护现场和恢复现场 (3 3 3 3)子程序体)子程序体)子程序体)子程序体 (4 4 4 4)子程序返回)子程序返回)子程序返回)子程序返回 子程序的结构子程序的结构2/18/20232ch6 子子程程序序的的定定义义是是由由过过程程定定义义伪伪指指令令PROCPROC和和ENDPENDP来完成的。其格式如下:来完成的。其格式如下:过程名过程名过程名过程名 PROC NEAR/FAR P

3、ROC NEAR/FAR PROC NEAR/FAR PROC NEAR/FAR 过程名过程名过程名过程名 ENDP ENDP ENDP ENDP 其其其其中中中中PROCPROCPROCPROC表表表表示示示示过过过过程程程程定定定定义义义义开开开开始始始始,ENDPENDPENDPENDP表表表表示示示示过过过过程程程程定定定定义结束。义结束。义结束。义结束。过程名是过程入口地址的符号表示过程名是过程入口地址的符号表示过程名是过程入口地址的符号表示过程名是过程入口地址的符号表示。一般过程名同标号一样,具有三种属性,即段一般过程名同标号一样,具有三种属性,即段一般过程名同标号一样,具有三种属

4、性,即段一般过程名同标号一样,具有三种属性,即段属性、偏移地址属性以及类型属性(属性、偏移地址属性以及类型属性(属性、偏移地址属性以及类型属性(属性、偏移地址属性以及类型属性(NEAR NEAR NEAR NEAR 和和和和 FAR)FAR)FAR)FAR)。6.1.1 子程序的定义子程序的定义6.1 子程序的设计方法子程序的设计方法2/18/20233ch61.1.如果调用程序和过程在如果调用程序和过程在同一代码段同一代码段同一代码段同一代码段中,则使用中,则使用NEARNEARNEARNEAR属属属属性性性性;MAIN PROC FARMAIN PROC FAR CALL SUBR1CAL

5、L SUBR1 RETMAIN ENDPMAIN ENDP;SUBR1 PROC SUBR1 PROC NEARNEAR RETSUBR1 ENDPSUBR1 ENDPMAIN PROC FARMAIN PROC FAR CALL SUBR1CALL SUBR1 RETSUBR1 PROC SUBR1 PROC NEARNEAR RETSUBR1 ENDPSUBR1 ENDPMAIN ENDPMAIN ENDP例例6.16.1过程嵌套定义过程嵌套定义2/18/20234ch62.2.如果如果调用程序和过程不在同一代码段中调用程序和过程不在同一代码段中调用程序和过程不在同一代码段中调用程序和过程

6、不在同一代码段中,则使用,则使用FARFAR属性;属性;SEGX SEGMENT SUBT PROC FARFAR RETSUBT ENDP CALL SUBT SEGX ENDS;SEGY SEGMENTSEGY SEGMENT CALL SUBT SEGY ENDS例例6.26.22/18/20235ch66.1.2 子程序的调用和返回子程序的调用和返回调用调用:CALL far/near ptr 过程名过程名返回返回:RET n2/18/20236ch66.1.3 6.1.3 保护现场和恢复现场保护现场和恢复现场例如:若子程序例如:若子程序例如:若子程序例如:若子程序PROGPROG中改

7、变了寄存器中改变了寄存器中改变了寄存器中改变了寄存器AXAX,BXBX,CXCX,DXDX的值,则的值,则的值,则的值,则 可采用如下方法保护和恢复现场。可采用如下方法保护和恢复现场。可采用如下方法保护和恢复现场。可采用如下方法保护和恢复现场。PROGPROCPUSHPUSHAXAXPUSH PUSH BX BX PUSH PUSHCXCX;保护现场;保护现场;保护现场;保护现场PUSHPUSHDXDX POPPOPDXDXPOPPOPCXCXPOPPOPBXBX;恢复现场恢复现场恢复现场恢复现场POPPOPAXAXRET;返回断点处返回断点处PROCENDP2/18/20237ch66.1.

8、4 主程序与子程序参数传递方式主程序与子程序参数传递方式 1 1 通过寄存器传送参数通过寄存器传送参数通过寄存器传送参数通过寄存器传送参数 这是最常用的一种方式,使用方便,但参数很多时不能这是最常用的一种方式,使用方便,但参数很多时不能使用这种方法。使用这种方法。例例6.3 6.3 十进制到十六进制转换的程序。程序要求从键盘十进制到十六进制转换的程序。程序要求从键盘取得一个十进制数,然后把该数以十六进制的形式在屏幕上取得一个十进制数,然后把该数以十六进制的形式在屏幕上显示出来。显示出来。开始开始调用DECIBIN调用CRLF调用BINIHEX调用CRLF结束从键盘取得十进制从键盘取得十进制数,

9、保存到数,保存到BXBX中中显示回车和换行显示回车和换行用十六进制形式用十六进制形式显示显示BXBX中的数中的数2/18/20238ch6Decihex segment assume cs:DecihexMain proc farMain proc farRepeat:push dsRepeat:push ds xor ax,ax xor ax,ax push ax push ax call decibincall decibin call crlf call crlf call binihex call binihex call crlf call crlf ret retMain endp

10、Main endp Decibin proc nearDecibin proc near mov bx,0Newchar:mov ah,1 int 21h sub al,30h jl exit cmp al,9 jg exit cbw xchg ax,bxxchg ax,bx mov cx,10 mov cx,10 mul cx mul cx xchg ax,bx xchg ax,bx ;每次乘的每次乘的 add bx,ax add bx,ax ;结果在结果在BX中中 jmp newchar Exit:retDecibin endp Decibin endp 2/18/20239ch6Bini

11、hex proc nearBinihex proc near mov ch,4mov ch,4Rotate:mov cl,4 Rotate:mov cl,4 rol bx,cl rol bx,cl mov dl,bl mov dl,bl and dl,0fh and dl,0fh add dl,30h add dl,30h cmp dl,3ah cmp dl,3ah jl print jl print add dl,7h add dl,7h Print:mov ah,2 Print:mov ah,2 int 21h int 21h dec ch dec ch jnz rotate jnz ro

12、tate ret ret Binihex endpBinihex endpCrlf proc nearCrlf proc near mov ah,2mov ah,2 mov dl,odh mov dl,odh int 21h int 21h mov dl,oah mov dl,oah int 21h int 21h ret retCrlf endpCrlf endpDecihex ends end repeat 2/18/202310ch62 2如果过程和调用过程在同一源文件(同一模块)中,如果过程和调用过程在同一源文件(同一模块)中,如果过程和调用过程在同一源文件(同一模块)中,如果过程和调

13、用过程在同一源文件(同一模块)中,则过程可直接访问模块中的变量。则过程可直接访问模块中的变量。则过程可直接访问模块中的变量。则过程可直接访问模块中的变量。3 4 例例例例 6.4_1 6.4_1 6.4_1 6.4_1 主程序主程序主程序主程序MAINMAINMAINMAIN和过程和过程和过程和过程PROADDPROADDPROADDPROADD在同一源文在同一源文在同一源文在同一源文件中,要求用过程件中,要求用过程件中,要求用过程件中,要求用过程PROADDPROADDPROADDPROADD累加数组的所有元素,并累加数组的所有元素,并累加数组的所有元素,并累加数组的所有元素,并把和(不考虑

14、溢出的可能性)送到指定的存储单元把和(不考虑溢出的可能性)送到指定的存储单元把和(不考虑溢出的可能性)送到指定的存储单元把和(不考虑溢出的可能性)送到指定的存储单元中去中去中去中去2/18/202311ch6DATA SEGMENTDATA SEGMENT ARY ARY DW 100 DUP(?)DW 100 DUP(?)COUNTCOUNT DW 100 DW 100 SUM SUM DW?DW?DATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENT MAIN PROC FARMAIN PROC FAR ASSUME CS:CODE,DS:DATA ASSUM

15、E CS:CODE,DS:DATASTART:PUSH DSSTART:PUSH DS SUB AX,AX SUB AX,AX PUSH AX PUSH AX MOV AX,DATA MOV AX,DATA CALL NEAR PTR PROADDCALL NEAR PTR PROADD RET RETMAIN ENDPMAIN ENDPPROADD PROC NEARPROADD PROC NEAR PUSH AXPUSH AX PUSH CX PUSH CX PUSH SI PUSH SI PUSH DI PUSH DI LEA SI,LEA SI,ARYARY MOV CX,MOV CX

16、,COUNTCOUNT XOR AX,AX XOR AX,AXNEXT:ADD AX,SINEXT:ADD AX,SI ADD SI,2 ADD SI,2 LOOP NEXT LOOP NEXT MOV MOV SUMSUM,AX,AX POP DIPOP DI POP SI POP SI POP CX POP CX POP AX POP AX RET RETPROADD ENDPPROADD ENDPCODE ENDSCODE ENDS END START END START2/18/202312ch6CODE SEGMENTARY DW 100 DUP(?)ARY DW 100 DUP(?

17、)COUNT DW 100COUNT DW 100SUM DW?SUM DW?NUM DW 100 DUP(?)NUM DW 100 DUP(?)N DW 100N DW 100TOTAL DW?TOTAL DW?MOV TABLE,OFFSET ARYMOV TABLE,OFFSET ARYMOV TABLE+2,OFFSET COUNTMOV TABLE+2,OFFSET COUNTMOV TABLE+4,OFFSET SUNMOV TABLE+4,OFFSET SUNMOV BX,OFFSET TABLEMOV BX,OFFSET TABLECALL PROADD CALL PROADD

18、 ;计算;计算SUMSUMPROADD PROC NEAR PUSH AX PUSH CX PUSH SI PUSH DI PUSH SI,BX MOV DI,MOV DI,BX+2BX+2 MOV CX,MOV CX,DI DI MOV DI,MOV DI,BX+4BX+4 XOR AX,AX XOR AX,AXNEXT:ADD AX,NEXT:ADD AX,SISI ADD SI,2 ADD SI,2 LOOP NEXT LOOP NEXT MOV MOV 【DI,DI,AX AX POP DIPOP DI POP SI POP CX POP AX RETPROADD ENDPCODE E

19、NDS END START3 3 通过地址表传递参数通过地址表传递参数例例6.4_26.4_22/18/202313ch64 4 通过堆栈传递地址或参数通过堆栈传递地址或参数Data segmentAry dw 100 dup(?)Count db 100Sum dw?Data endsStack segment para stack stack dw 100 dup(?)tos label wordStack endsCode1 segment assume cs:code1,ds:data,ss;stackMain proc farStart:push ds xor ax,ax push

20、ax mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,offset tos Mov bx,offset ary Push bx Mov bx,offset count Push bx Mov bx,offset sum Push bx Call far ptr proadd mov al,summov al,sum mov dl,al mov ah,2 int 21h ret Main endp Code1 ends例例6.4_36.4_32/18/202314ch6Sum地址地址Count地址地址Ary地址地址spdisicxaxbp(

21、Sp)bpIPCSCode2 segment assume cs:code2Proadd proc farProadd proc far push bp mov bp,sp push ax push cx push si push di mov si,bp+0ah mov di,bp+08h mov cl,di mov di,bp+06h xor al,alAgain:add al,si inc si dec cl jnz again mov di,al pop di pop si pop cx pop ax pop bp ret 6ret 6Proadd endpCode2 ends end

22、 startbp+0ahbp+08hbp+06hSpSpSpSpSp2/18/202315ch6(1)PUBLIC(1)PUBLIC伪指令伪指令 格式:格式:PUBLIC PUBLIC PUBLIC PUBLIC 符号符号符号符号 ,符号,符号,符号,符号 功功能能:说说明明其其后后的的符符号号是是全全局局符符号号。全全局局符符号号能能被被其其他他模模块引用。块引用。(局部符号)局部符号)(2)EXTRN(2)EXTRN伪指令伪指令 格式:格式:EXTRN EXTRN EXTRN EXTRN 符号:类型符号:类型符号:类型符号:类型 ,符号:类型,符号:类型,符号:类型,符号:类型 功功能能:

23、说说明明在在本本模模块块中中需需要要引引用用的的、由由其其他他模模块块定定义义的的符符号,即外部符号号,即外部符号。5 5 多个模块之间的参数传送问题多个模块之间的参数传送问题多个模块之间的参数传送问题多个模块之间的参数传送问题2/18/202316ch6;source module 1;source module 1extrn var2:word,lab2:farextrn var2:word,lab2:farpublic var1,lab1public var1,lab1Data1 segmentData1 segment var1 db?var1 db?var3 dw?var3 dw?v

24、ar4 dw?var4 dw?Data1 endsData1 endscode1 segmentcode1 segment assume cs:code1,ds:data1 assume cs:code1,ds:data1Main proc farMain proc far start:mov ax,data1 start:mov ax,data1 mov ds,ax mov ds,ax lab1 lab1:mov ah,4ch mov ah,4ch int 21h int 21hMain endpMain endpCode1 ends Code1 ends End startEnd star

25、t;source module 2source module 2 extern var1:byte,var4:wordextern var1:byte,var4:wordextern var1:byte,var4:wordextern var1:byte,var4:word public var2 public var2 public var2 public var2 Data2 segmentData2 segmentData2 segmentData2 segment var2 dw?var2 dw?var2 dw?var2 dw?var3 dw?var3 dw?var3 dw?var3

26、dw?Data2 ends Data2 ends Data2 ends Data2 ends code2 segment code2 segment code2 segment code2 segment assume cs:code2,ds:data2 assume cs:code2,ds:data2 assume cs:code2,ds:data2 assume cs:code2,ds:data2Main proc farMain proc farMain proc farMain proc far start:mov ax,data2 start:mov ax,data2 start:m

27、ov ax,data2 start:mov ax,data2 mov ds,ax mov ds,ax mov ds,ax mov ds,ax mov ah,4ch mov ah,4ch mov ah,4ch mov ah,4ch int 21h int 21h int 21h int 21hMain endpMain endpMain endpMain endpCode2 ends Code2 ends Code2 ends Code2 ends End startEnd startEnd startEnd start注意:注意:应先有应先有应先有应先有public public public

28、 public 定义,然后才有定义,然后才有定义,然后才有定义,然后才有extrnextrnextrnextrn说明说明说明说明;source module 3source module 3extern lab2:farextern lab2:farextern lab2:farextern lab2:farpublic lab2,lab3public lab2,lab3public lab2,lab3public lab2,lab3Data2 segmentData2 segmentData2 segmentData2 segment var2 dw?var2 dw?var2 dw?var2

29、 dw?var3 dw?var3 dw?var3 dw?var3 dw?Data2 endsData2 endsData2 endsData2 endscode3 segmentcode3 segmentcode3 segmentcode3 segment assume cs:code3 assume cs:code3 assume cs:code3 assume cs:code3 Lab2:Lab2:Lab2:Lab2:.Lab3:Lab3:Lab3:Lab3:.Code3 ends Code3 ends Code3 ends Code3 ends End End End End例例6.5

30、6.5 多个模块间的参数共享多个模块间的参数共享2/18/202317ch6;Source model 1Source model 1EXTERN proadd:farEXTERN proadd:farDATA SEGMENT DATA SEGMENT commoncommon ARY ARY DW 100 DUP(?)DW 100 DUP(?)COUNTCOUNT DW 100 DW 100 SUM SUM DW?DW?DATA ENDSDATA ENDSCODE1 SEGMENT MAIN PROC FARMAIN PROC FAR ASSUME CS:CODE1,DS:DATA ASSU

31、ME CS:CODE1,DS:DATASTART:START:PUSH DS PUSH DS SUB AX,AX SUB AX,AX PUSH AX PUSH AX MOV AX,DATA MOV AX,DATA CALL far ptr PROADDCALL far ptr PROADD RET RETMAIN ENDPMAIN ENDPCODE1 ENDSCODE1 ENDS END STARTEND START主程序和子过程不在同一个模块的时参数传递方法一主程序和子过程不在同一个模块的时参数传递方法一LOOP NEXT:LOOP NEXT:MOV MOV SUMSUM,AX,AX POP

32、 DIPOP DI POP SI POP SI POP CX POP CX POP AX POP AX RET RETPROADD ENDPPROADD ENDPCODE2 endsCODE2 ends END END;Source model 2Source model 2PUBLIC PROADDPUBLIC PROADDDATA SEGMENT DATA SEGMENT commoncommon ARY ARY DW 100 DUP(?)DW 100 DUP(?)COUNTCOUNT DW 100 DW 100 SUM SUM DW?DW?DATA ENDSDATA ENDSCODE2

33、SEGMENT PROADD PROC FARPROADD PROC FAR ASSUME CS:CODE2,DS:DATA ASSUME CS:CODE2,DS:DATA MOV AX,DATA MOV AX,DATA MOV DS,AX MOV DS,AX PUSH AX PUSH AX PUSH CX PUSH CX PUSH SI PUSH SI PUSH DI PUSH DI LEA SI,ARY LEA SI,ARY MOV CX,COUNT MOV CX,COUNT XOR AX,AX XOR AX,AXNEXT:NEXT:ADD AX,SI ADD AX,SI ADD SI,2

34、 ADD SI,2 (如例如例6.4_16.4_1的参数传递可利用段覆盖的参数传递可利用段覆盖)2/18/202318ch6;Source model 1;Source model 1extern var1:word extern var1:word extern output:farextern output:farextern var2:wordextern var2:wordpublic quitpublic quitlocal_data segmentlocal_data segment var dw 5 var dw 5 local_data ends local_data ends

35、code segmentcode segment assume assume cs:code,ds:local_datacs:code,ds:local_datamain proc farmain proc farstart:start:mov ax,local_data mov ax,local_data mov ds,ax mov ds,ax mov bx,var mov bx,var mov ax,seg var1 mov ax,seg var1 mov es,ax mov es,ax add bx,es:var1 add bx,es:var1主程序和子过程不在同一个模块的时参数传递方法

36、二主程序和子过程不在同一个模块的时参数传递方法二 mov ax,seg var2 mov ax,seg var2 mov es,ax mov es,ax sub es:var2,50 sub es:var2,50 jmp ouputjmp ouput quitquit:mov ah,4ch:mov ah,4ch int 21h int 21hmain endpmain endpcode endscode ends end start end start;Source model 2;Source model 2public var1public var1extdata1 segmentextd

37、ata1 segment var1 dw 10 var1 dw 10 extdata1 endsextdata1 ends end end;source model 3;source model 3public var2public var2extern quit:farextern quit:farextdata2 segmentextdata2 segment var2 dw 3var2 dw 3 extdata2 endsextdata2 endspublic outputpublic outputprogram segmentprogram segment assume cs:prog

38、ram,assume cs:program,ds:extdata2 ds:extdata2 outputoutput:jmp quitjmp quit program endsprogram ends end end(例例6.6 6.6 含三个源模块含三个源模块)2/18/202319ch6;Source model 1;Source model 1Global Global segment publicsegment publicExtern var1:wordExtern var1:wordExtern var2:wordExtern var2:wordGlobal Global ends

39、endsLocal_dataLocal_data segment segment Local_dataLocal_data ends endscodecode segment segment assume cs:code,assume cs:code,ds:local_data,ds:local_data,es:global es:globalmain proc farmain proc far主程序和子过程不在同一个模块的时参数传递方法三主程序和子过程不在同一个模块的时参数传递方法三start:start:mov x,local_data mov x,local_data mov ds,ax

40、 mov ds,ax mov ax,global mov ax,global mov es,ax mov es,ax mov bx,es:var1mov bx,es:var1 add es:var2,bx add es:var2,bx mov ah,4ch mov ah,4ch int 21h int 21hmain endpmain endpcodecode ends ends end start end start(例例6.7 6.7 含二个源模块含二个源模块);source model 2 ;source model 2Global segment publicGlobal segmen

41、t public public var1 public var1 public var2 public var2 var1 dw?var1 dw?var2 dw?var2 dw?Global endsGlobal ends end end2/18/202320ch66.1.5 6.1.5 增强功能的过程定义伪操作增强功能的过程定义伪操作Procname PROC Procname PROC Procname PROC Procname PROC attributes field attributes field attributes field attributes field USERUSE

42、RUSERUSER register list register list register list register list ,parameter field ,parameter field ,parameter field ,parameter field Procname ENDPProcname ENDPProcname ENDPProcname ENDPAttributes field(Attributes field(Attributes field(Attributes field(属性字段)属性字段)属性字段)属性字段)包括:包括:Distance Distance Di

43、stance Distance:near near near near 、farfarfarfar Language type Language type Language type Language type:说明是那种高级语言的子程序说明是那种高级语言的子程序 如如pascal pascal pascal pascal、c c c c 等。等。Visibility Visibility Visibility Visibility :说明程序的可见性说明程序的可见性 是是privateprivateprivateprivate 或是或是publicpublicpublicpublic。Pro

44、logue Prologue Prologue Prologue:是一个是一个宏的名字宏的名字宏的名字宏的名字,允许用宏来控制过程的入口或出口有关的代码,允许用宏来控制过程的入口或出口有关的代码USERUSERUSERUSER:该字段用来:该字段用来指定用户所需保存和恢复的寄存器表指定用户所需保存和恢复的寄存器表指定用户所需保存和恢复的寄存器表指定用户所需保存和恢复的寄存器表。Parameter fieldParameter fieldParameter fieldParameter field:参数字段参数字段 ,允许用户指定该过程所用的参数允许用户指定该过程所用的参数允许用户指定该过程所用

45、的参数允许用户指定该过程所用的参数 。标识符:类型标识符:类型标识符:类型标识符:类型 ,标识符:类型,标识符:类型,标识符:类型,标识符:类型 2/18/202321ch6Data segmentAry db 10 dup(?)Count db 10Sum db?Data endsStack segment para stack stack db 100 dup(?)Stack endsCode1 segment assume cs:code1,ds:data,ss:stackMain proc farStart:push ds xor ax,ax push ax mov ax,data m

46、ov ds,ax Mov bx,offset ary Push bx Mov bx,offset count Push bx Mov bx,offset sum Push bx Call far ptr proaddCall far ptr proadd mov al,sum mov dl,al mov ah,2 int 21h retMain endpCode1 ends对对例例6.4 6.4 采用用增强功能过程定义伪操作实现采用用增强功能过程定义伪操作实现 2/18/202322ch6Code2 segment assume cs:code2Proadd proc farProadd pr

47、oc far push bp mov bp,sp push ax push cx push si push di mov si,bp+0ah mov di,bp+08h mov cl,di mov di,bp+06h xor al,alAgain:add al,si inc si dec cl jnz again mov di,al pop di pop si pop cx pop ax pop bp ret 6ret 6Proadd endpCode2 ends end startCode2 segment assume cs:code2Proadd procProadd proc pasc

48、alpascal useruser ax cx si diax cx si di,parapara:wordword,parcparc:wordword,parspars:wordword mov si,para mov di,parc mov cl,di mov di,pars xor al,alAgain:add al,si inc si dec cl jnz again mov di,al ret ret Proadd endpCode2 ends end startSumSum地址地址地址地址CountCount地址地址地址地址AryAry地址地址地址地址(bp)IPCS(bp+2)(

49、bp+4)(bp+6)(bp+8)(bpbp +a+a)原始原始bp parspars paraparaparcparc局部局部局部局部变量变量变量变量disicxax(bp-2)2/18/202323ch6Code2 segment assume cs:code2Proadd proc farProadd proc far push bp mov bp,sp push ax push cx push si push di mov si,bp+0ah mov di,bp+08h mov cl,di mov di,bp+06h xor al,alAgain:add al,si inc si de

50、c cl jnz again mov di,al pop di pop si pop cx pop ax pop bp ret 6ret 6Proadd endpCode2 ends end startCode2 segment assume cs:code2Proadd procProadd proc C C useruser ax cx si diax cx si di,parspars:wordword,parcparc:word,word,parapara:wordword mov si,para mov di,parc mov cl,di mov di,pars xor al,alA

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

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

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

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