微机原理与接口技术_第4章 汇编语言程序设计(2)_第1页
微机原理与接口技术_第4章 汇编语言程序设计(2)_第2页
微机原理与接口技术_第4章 汇编语言程序设计(2)_第3页
微机原理与接口技术_第4章 汇编语言程序设计(2)_第4页
微机原理与接口技术_第4章 汇编语言程序设计(2)_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、尹作友尹作友顺序结构;顺序结构;分支结构;分支结构;循环结构;循环结构;子程序结构;子程序结构;综合举例;综合举例;DOSDOS系统功能调用系统功能调用INT nINT n 软中断指令,该指令执行一次就调用一个相应软中断指令,该指令执行一次就调用一个相应的中断服务程序。的中断服务程序。 其中:其中:n n= 0 n= 0 4 4 ;8088/8086CPU8088/8086CPU占用占用 n n= 5 n= 5 1FH 1FH ;为;为BIOSBIOS的各功能子程序的各功能子程序 n n= 20n= 203FH 3FH ;为;为DOSDOS的各功能子程序。其中的各功能子程序。其中INT 21I

2、NT 21是一个具有是一个具有100100多个子功能的中断服务多个子功能的中断服务程序,分别用于设备管理,目录管理,文件管程序,分别用于设备管理,目录管理,文件管理及其它功能。理及其它功能。常用常用DOSDOS功能表功能表功能号功能入口参数出口参数1*键入字符并回显AL=字符2显示字符DL=字符7键入字符不回显AL=字符8*键入字符不回显AL=字符9显示字符串(不含 $ )DS:DX=串首地址0A键入字符串至内存DS:DX=缓冲区首地址4C返回 DOS(带返回码)AL=返回码功能号n AH置入口参数执行INT 21H分析出口参数INT 21的使用方法:例:例:通过人机对话从键盘通过人机对话从键

3、盘输入一字符串,存入输入一字符串,存入BUFINBUFIN为首地址的内存区,并在为首地址的内存区,并在显示器显示该字符串。显示器显示该字符串。内存区长度20H实际输入字符串长度输入字符1输入字符2:输入字符n回车符BUFINBUFIN1BUFIN2BUFINI显示提示显示提示 DO YOU WANT TO INPUT STRING?(Y/N) 等待键盘输入应答等待键盘输入应答 Y/N键盘输入键盘输入Y显示提示显示提示 PLEASE INPUT STRING键盘输入字符串存入键盘输入字符串存入BUFIN计算输入字符串长度,并将字符串计算输入字符串长度,并将字符串结尾加结尾加显示输入的字符串显示输

4、入的字符串返回返回DOSNDONE功能号功能号AH 09H01H09H0AH09H4CHDATA SEGMENTSTRING1DB DO YOU WANT TO INPUT DB STRING?(Y/N),0DH,0AH,STRING2DB PLEASE INPUT STRING. DB 0DH,0AH,BUFIN DB 20H,? ;20H为设置长度,?为实际输入长度BUFINI DB 20H DUP(?) ;实际输入的字符串存放区DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTARTPROC FARBEGING:PUSH DS MO

5、V AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES MOV ES,AX AX ;定义使用;定义使用DSDS,ESES LEA DXLEA DX,STRING1STRING1 MOV AH MOV AH,09H09H INT 21H INT 21H ;显示;显示STRING1STRING1提示提示 MOV AHMOV AH,01H01H INT 21H INT 21H ;从键盘输入;从键盘输入1 1个字符至个字符至ALAL CMP AL CMP AL,YY JNE DONE JNE DONE LEA DXLEA DX,STRING2STRING2 MOV AH

6、 MOV AH,09H09H INT 21H INT 21H ;显示;显示STRING2STRING2提示提示 LEA DXLEA DX,BUFINBUFIN MOV AH MOV AH,0AH0AH INT 21H INT 21H ;从键盘输入字符串至;从键盘输入字符串至BUFINBUFINMOV ALMOV AL,BUFINBUFIN1 1CBW CBW ;计算;计算BUFIN BUFIN 末地址末地址LEA SILEA SI,BUFINBUFIN2 2ADD SIADD SI,AX AX ;SI SI 指向原输入回车位置指向原输入回车位置MOV SIMOV SI, ;字符串结尾为;字符串

7、结尾为MOV AHMOV AH,09H09HLEA DXLEA DX,BUFINBUFIN2 2INT 21H INT 21H ;显示输入的字符串,无长度;显示输入的字符串,无长度DONEDONE:RETRETSTARTSTARTENDPENDPCODECODEENDSENDS END BEGIN END BEGIN DATA SEGMENTSTRING1DB DO YOU WANT TO INPUT DB STRING?(Y/N),0DH,0AH,STRING2DB PLEASE INPUT STRING. DB 0DH,0AH,BUFIN DB 20H,? ;20H为设置长度,?为实际输入

8、长度BUFINI DB 20H DUP(?) ;实际输入的字符串存放区DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTARTPROC FARBEGING:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES MOV ES,AX AX ;定义使用;定义使用DSDS,ESES LEA DXLEA DX,STRING1STRING1 MOV AH MOV AH,09H09H INT 21H INT 21H ;显示;显示STRING1STRING1提示提示 MOV AHMOV AH,01H0

9、1H INT 21H INT 21H ;从键盘输入;从键盘输入1 1个字符至个字符至ALAL CMP AL CMP AL,YY JNE DONE JNE DONE LEA DXLEA DX,STRING2STRING2 MOV AH MOV AH,09H09H INT 21H INT 21H ;显示;显示STRING2STRING2提示提示 LEA DXLEA DX,BUFINBUFIN MOV AH MOV AH,0AH0AH INT 21H INT 21H ;从键盘输入字符串至;从键盘输入字符串至BUFINBUFIN MOV AL MOV AL,BUFINBUFIN1 1 CBW CBW

10、;计算;计算BUFIN BUFIN 末地址末地址 LEA SILEA SI,BUFINBUFIN2 2 ADD SI ADD SI,AX AX ;SI SI 指向原输入回车位置指向原输入回车位置 MOV SIMOV SI, ;字符串结尾为;字符串结尾为 MOV AHMOV AH,09H09H LEA DX LEA DX,BUFINBUFIN2 2 INT 21H INT 21H ;显示输入的字符串,无长度;显示输入的字符串,无长度DONEDONE:MOV AH,4CHMOV AH,4CH INT 21H INT 21H RET RETSTARTSTARTENDPENDPCODECODEENDS

11、ENDS END BEGIN END BEGIN 顺序结构顺序结构 S 1S2S3顺序结构顺序结构 顺序结构顺序结构 顺序结构顺序结构 顺序结构顺序结构 例例1 1:两个两个32位无符号数的乘法位无符号数的乘法ABCD*+B*D部分积部分积1最后乘积最后乘积A*D部分积部分积2B*C部分积部分积3A*C部分积部分积4BBX+0 +2 +4 +6 +8 +A +C +EADC*+和和1积积3*积积1* 积积2 + 积积1H*积积4和和2H+积积1L积积1H和和1L和和1H和和2L和和2H和和3L和和3H乘法运算过程示意图乘法运算过程示意图顺序结构顺序结构 设地址指针设地址指针被乘数的低被乘数的低

12、16位送位送AX乘数的低乘数的低16位位D送送SI乘数的高乘数的高16位位C送送DIBD存部分积存部分积1被乘数的高被乘数的高16位位A送送AXAD部分积部分积2部分积部分积2L部分积部分积1H进位加至部分和进位加至部分和1H,存内存存内存BC部分积部分积3部分积部分积3部分和部分和1,存内存存内存AC部分积部分积4存进位存进位部分积部分积4部分和部分和2H+ 进位和进位和3存和存和3返回返回顺序结构顺序结构 DATA SEGMENTMULNUM DW 0000,0FFFFH,0000,0FFFFH,4DUP( ?) DATA ENDSSTACK SEGMENT PARA STACK STAC

13、KSTAK DB 100 DUP(?)(?) TOP EQU LENGTH STAKSTACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS: STACK, ES :DATABEGIN: MOV AX, DATA ;送数据段段地址;送数据段段地址 MOV DS,AX MOV ES, AX MOV AX,STACK ;送堆栈段段地址;送堆栈段段地址 MOV SS,AX MOV SP, OFFSET TOP ;堆栈段偏移量送;堆栈段偏移量送SP顺序结构顺序结构 LEA BX,MULNUMMULU32: MOV AX ,BX ; B送送 AX MOV SI ,

14、BX+4 ; D送送SI MOV DI ,BX+6 ; C送送DI MUL SI ; B*D MOV BX+8 ,AX ; 保存部分积保存部分积1 MOV BX+0AH ,DX MOV AX ,BX+2 ; A送送AX MUL SI ; A*D ADD AX ,BX+0AH ADC DX ,0 ; 部分积部分积2L与部分积与部分积1H相加相加 MOV BX+0AH ,AX ; 存和存和1 MOV BX+0CH ,DX MOV AX ,BX ; B送送AX MUL DI ; C*B,部分积,部分积3顺序结构顺序结构 ADD AX ,BX+0AH ;部分积;部分积3与和与和1相加相加 ADC DX

15、 ,BX+0CH MOV BX+0AH ,AX ;存和;存和2 MOV BX+0CH ,DX PUSHF ;保护进位位;保护进位位 MOV AX ,BX+2 ; A送送 AX MUL SI , ;AC,得积,得积4 POPF ;恢复进位位;恢复进位位 ADC AX , BX+0CH ; 部分积部分积4L与和与和2H相加相加 ADC DX ,0 MOV BX+0CH ,AX MOV BX+0EH ,DX ; 存和存和3 MOV AH,4CH INT 21HCODE ENDS END BEGIN 分支结构分支结构 图52 分支结构框图形式图52 分支结构框图形式判定条件Y YN N判定条件分支结构

16、分支结构例例3 3:在以:在以BUFBUF为首地址的内存,存放着一个长度为为首地址的内存,存放着一个长度为N N(N256)N39H(AL) 41H(AL)5AHDH+1DL+1(CX)=0修改修改BX及及(CX)-1NNNNNYYYYYADH送内存送内存ADL送内存送内存AL=N-DH-DLAL送内存送内存返回返回DOS分支结构分支结构要依次检查才能要依次检查才能进入到要求的入口地址。进入到要求的入口地址。分支结构分支结构分支结构分支结构分支结构分支结构跳转表在内跳转表在内存中的存放方法存中的存放方法P0LP0HP1LP1H.BASE+0BASE+2P0P1LEA BX,BASEAND AL

17、,0FH ADD AL,ALADD BX,AXJMP WORD PTR BX分支结构分支结构图5-5 转移指令跳转表图5-5 转移指令跳转表BASE1BASE1JMP P1JMP P1JMP P2JMP P2JMP P5JMP P5E9E9P1低位P1高位P1高位E9E9P2低位P2高位P2高位分支结构分支结构分支结构分支结构循环程序结构循环程序结构例例4 4:首地址为首地址为BUFFERBUFFER的数组已按升序排好,长度为的数组已按升序排好,长度为N N(=10=10),在数组中查找数),在数组中查找数M M(=80=80),若找到则从数组),若找到则从数组中删掉,否则将它插入正确的位置,

18、中删掉,否则将它插入正确的位置,DXDX中记录数组最中记录数组最后的长度。后的长度。循环程序结构循环程序结构9810253698908270585348AX CX=9AX CX=8AX CX=7AX CX=6AX CX=5AX CX=4AX CX=3AX CX=2AX CX=1AX CX=0AX=80 CX=10 DX=10AX BUFFERSI 9082AX BUFFERSI-2 AX BUFFERSI-2 80DX=11AX BUFFERSI-2 若数组中若数组中无无M寻找插入位置寻找插入位置SI=2*(DX1)CMP AX,BUFFERSI 搜索有无关键字搜索有无关键字MOV DI,OF

19、FSET BUFFERCLDREPNE SCASW元素下移元素下移MOV BX,BUFFERSIMOV BUFFERSI+2,BX插入插入MOV BUFFERSI+2,AX循环程序结构循环程序结构10253698908070585348AX CX=9 DI=BUFFER+2AX CX=8 DI=BUFFER+4AX CX=7 DI=BUFFER+6AX CX=6 DI=BUFFER+8AX CX=5 DI=BUFFER+AAX CX=4 DI=BUFFER+CAX CX=3 DI=BUFFER+EAX = CX=2 DI=BUFFER+10HAX=80 CX=10 DI=BUFFER9098B

20、X=DI=(BUFFER+10H) DI-2 CX-1=1BX=DI+2=(BUFFER+12H) DI-2 CX-1=0DX=9若数组中有数若数组中有数M 搜索有无关键字搜索有无关键字MOV DI,OFFSET BUFFERCLDREPNE SCASW 搜索到,后续元素前移搜索到,后续元素前移MOV BX,DIMOV DI-2,BXADD DI,2循环程序结构循环程序结构初始化初始化串扫描查找串扫描查找找到找到插在插在SI所所指单元后指单元后关键字关键字SI(CX)=0数组元素下移数组元素下移修改比较指针修改比较指针SI数组长度数组长度+1设置串尾比较指针设置串尾比较指针SIDI 所指元素上

21、移所指元素上移修改比较指针修改比较指针DINYYNY数组长度数组长度-1(CX)-1=0YNN结束结束初始化:初始化:M送送AX;N送送CX,DX;地址偏移量送地址偏移量送DI;增量修改指针增量修改指针 CLD循环程序结构循环程序结构DATA SEGMENT BUFFER DW 5,10,32,47,53,77,89,106,115,124 N DB 10 M EQU 80DATA ENDSCODE SEGEMENT ASSUME CS:CODE,DS:DATA,ES:DATAMAIN PROC FARSTART: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA M

22、OV DS,AX MOV ES,AX ; MOV AX,M ;待查数;待查数 送送AX MOV CX,N ;数组长度送;数组长度送 CX MOV DX,N MOV DI,OFFSET BUFFER CLD REPNE SCASW ;串扫描查找;串扫描查找循环程序结构循环程序结构 JE DEL ;查到,;查到,ZF=1 DEC DX ;未查到,插入;未查到,插入 MOV SI,DX ;关键字与最后数比较;关键字与最后数比较 ADD SI,DXL1: CMP AX,BUFFERSI JL L2 ;关键字比数组中某个字小,转;关键字比数组中某个字小,转L2 MOV BUFFERSI+2, AX ;大

23、,则插在后面;大,则插在后面 JMP L3L2: MOV BX,BUFFERSI ;数组下移一位;数组下移一位 MOV BUFFERSI+2, BX SUB SI,2 JMP L1L3: ADD DX,1 ;修改长度;修改长度 JMP NEXT1DEL: JCXZ NEXT ;找到,删此元素;找到,删此元素DEL1: MOV BX,DI ;其后元素依次前移;其后元素依次前移 MOV DI-2,BX ADD DI,2 LOOP DEL1NEXT: DEC DX ;改变数组长度;改变数组长度NEXT1: RETMAIN ENDPCODE ENDS END START循环程序结构循环程序结构循环程序

24、结构循环程序结构图图5 5- -8 8 循循环环程程序序结结构构图图入口初始化部分循环体修改参数循环控制出口入口初始化部分循环体修改参数循环控制出口(a a)“先先执执行行,后后判判断断”结结构构(b b)“先先判判断断,后后执执行行”结结构构循环程序结构循环程序结构循环程序结构循环程序结构图5-9 16进制数转化成ASCII码流程图图5-9 16进制数转化成ASCII码流程图开始初始化循环计数值把最右面的数位转换为ASCII码加上7出口BX 循环左移一个数位是AF?显示一个字符循环计数值0?N NY YY YN N循环程序结构循环程序结构循环程序结构循环程序结构循环程序结构循环程序结构循环程

25、序结构循环程序结构 例:例:存储在存储在BLOCKBLOCK为首地址内存中为首地址内存中1010个个16bit16bit带符带符号数,找出最大值后存在号数,找出最大值后存在MAXMAX单元中。单元中。循环程序结构循环程序结构AX大数CMPCMP大数BLOCK取一次取一次比较比较9次次交换交换(待定待定)循环程序结构循环程序结构DATA SEGMENT ;数据段说明开始;数据段说明开始 BLOCK DW 65C8H ,35 ,694AH,0A398HCOUNT DW 10MAX DW ? ;设置;设置MAX的内存空间的内存空间DATA ENDS ;数据段说明结束;数据段说明结束CODE SEGM

26、ENT ;代码段说明开始;代码段说明开始 ASSUME CS:CODE ,DS:DATABEGIN: MOV AX,DATA MOV DS,AX ;设置本程序的;设置本程序的DS LEA BX, BLOCK ;本程序的运行程序开始;本程序的运行程序开始 MOV AX,BX INC BX INC BX MOV CX,COUNTAGAIN:CMP AX,BX JG NEXT MOV AX,BXNEXT: INC BX INC BX LOOP AGAIN MOV MAX,AX ;本程序运行结束;本程序运行结束 MOV AH, 4CH ;调用内部中断返回;调用内部中断返回DOS INT 21H COD

27、E ENDS ;代码段结束说明;代码段结束说明 END BEGIN ;编译结束说明;编译结束说明循环程序结构循环程序结构1.在DAT1 单元开始存放10字节(字)的有符号(无符号数),统计正数(负数)、奇数(偶数)个数、求和、平均值,结果存在DAT2单元2.在DATA 1单元开始存放10个字符串,统计大写(小写、数字)的个数,结果存在DATA2单元3.将一个字数据(AX)的十六进制数转换为对应的ASIIC码,结果存在DATA单元。循环程序结构循环程序结构 l 各重循环的初始条件的控制;各重循环的初始条件的控制;l 内循环可以嵌套在外循环中,也可以几个内循环可以嵌套在外循环中,也可以几个内循环并

28、列在外循环中,但各层循环之间不能交内循环并列在外循环中,但各层循环之间不能交叉,内循环可以跳到外循环中,不可以从外循环叉,内循环可以跳到外循环中,不可以从外循环直接跳进内层循环;直接跳进内层循环;l 不能让循环回到初始条件,以免出现死循不能让循环回到初始条件,以免出现死循环。环。 如果一个循环程序的循环体内还包含有一个或多个循环结构如果一个循环程序的循环体内还包含有一个或多个循环结构的程序,那么这个程序称为双重或多重循环结构程序。我们先的程序,那么这个程序称为双重或多重循环结构程序。我们先用软件延时程序来说明多重循环程序的结构。用软件延时程序来说明多重循环程序的结构。 SOFTDLY:MOV

29、BL,10 DELAY: MOV CX,2801 WAIT0: LOOP WAIT0 ;内循环延时内循环延时 DEC BL JNZ DELAY此程序每次内循环时,此程序每次内循环时,CX由由2801减至零,减至零,BL维持不变。外循环维持不变。外循环进行进行10遍。遍。 此程序虽然简单,但是其结构是双重循环。此程序虽然简单,但是其结构是双重循环。循环程序结构循环程序结构 例例 内存DATA开始存放100个单字节数据。编写程序统计这些数据内“0”和“1”个数相等的数据有多少,将结果存入NUMB单元。完成此例需要一个数据一个数据地检查0和1是否相等,相等时则计数加1,直到100个数据检查完毕。DA

30、TA:+015H+127H+294H+311H+43BH+548H+6.+7.+8.+9.+10.+11.+12.+99.循环程序结构循环程序结构 DSEG SEGMENTDATA DB 15H,27H,94H ;共100个数 DB 11H,3B,48H,. NUMB DB 0DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEG MOV DS,AX MOVSI,OFFSET DATA MOVCL,100 XORAL,ALDATA:+015H+127H+294H+311H+43BH+548H+6.+7.+8.+9.+10.+

31、11.+12.+99.循环程序结构循环程序结构 RPT2:MOVCH,08HXORBH,BHMOVAH,SIRPT1:RORAH,1JNCCHT1INCBHCHT1:DECCHJNZRPT1CMPBH,04JNZCHT2INCALCHT2:INCSIDECCLJNZRPT2MOVDNUMB,ALMOVAH,4CHINT21HCSEGENDSENDSTARTDATA:+015H+127H+294H+311H+43BH+548H+6.+7.+8.+9.+10.+11.+12.+99.循环程序结构循环程序结构ADC BH,0子程序结构子程序结构子程序结构子程序结构子程序结构子程序结构循环程序结构循环

32、程序结构BUFFERSTRINGA42C533B4134433233354233循环程序结构循环程序结构主程序主程序输入参数:输入参数:1、待转换的二进制数、待转换的二进制数AL 2、存放、存放ASCII码的地址指针码的地址指针输出参数:输出参数:1、转换的、转换的ASCII码放入码放入SI间址间址 的内存的内存 2、修改后的、修改后的SI指针指针16进制数首地址进制数首地址BXBXASCIIASCII码码首地址首地址SISI1616进制数长度进制数长度CXCXASCII码长度码长度L2L2取待转换数 ALDL分离出低4位分离出高4位右移四位调用CHANGE子程序(CX)-1=0结结 束束AG

33、AINN调用CHANGE子程序Y(AL)10(AL)07HAL(AL)30HAL(AL)(SI)(SI)(SI)+1SI(SI)+1SI返回DOSADD_0CHANGE子程序框图YNDATASEGMANTSTRING DB 34H,98HBUFFERDB 2*2 DUP (?) ;设置;设置4字节存放空字节存放空间间DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATA循环程序结构循环程序结构BEGIN:MOV AX,DATA MOV DS,AX ;置本程序的;置本程序的DS MOV CX,2 LEA BX,STRING ;置源操作数指针;置源操作数指针 LEA S

34、I,BUFFER ;置目的操作数指针;置目的操作数指针 AGAIN: MOV AL,BX;取源操作数,存入;取源操作数,存入AL DL MOV DL,AL AND AL,0FH; 使高使高4为为0,底,底4位保留位保留 CALL CHANGE; 调子转换为调子转换为ASCII存入内存存入内存循环程序结构循环程序结构MOV AL,DL; 恢复原操作数恢复原操作数PUSH CX; 因移位使用因移位使用CL原原CX入栈保护入栈保护MOV CL,4; 原高原高4位到低位到低4SHR AL,CL; 高高4位为位为0POP CX; 原原CX恢复恢复CALL CHANGE; 调子转换为调子转换为ASCII存

35、入内存存入内存INC BX; 修改源操作数指针修改源操作数指针LOOP AGAIN, 判循环终点判循环终点MOV AH,4CH INT 21H循环程序结构循环程序结构CHANGE PROC;CHANGE子程序说明子程序说明CMP AL,10JL ADD_0ADD AL,7; 操作数可用表达式,其中操作数可用表达式,其中 表表示示ASCII码,结果是加码,结果是加07H ADD_0: ADD AL,30H MOV SI,AL;送结果送结果 INC SI RETCHANGE ENDPCODE ENDS END BEGIN循环程序结构循环程序结构子程序结构子程序结构4 45 5 程序设计方法程序设计

36、方法七、参数传递技术七、参数传递技术(一)利用寄存器传递参数(一)利用寄存器传递参数 例如在某子程序中要对两个长度相同的数据缓冲区例如在某子程序中要对两个长度相同的数据缓冲区进行操作,可在主程序中把缓冲区的长度和首址存入寄进行操作,可在主程序中把缓冲区的长度和首址存入寄存器中。存器中。MOV CX,LENGTHMOV BX,OFFSET BUFFER1MOV SI, OFFSET BUFFER2CALL SUBR子程序结构子程序结构例:编程实现数组段分别求和(不计溢出)。例:编程实现数组段分别求和(不计溢出)。DATA SEGMENT ARY1 DW 100 DUP(?)(?) SUM1 DW

37、 ? ARY2 DW 100 DUP(?)(?) SUM2 DW ?DATA ENDSSTACK SEGMENT STACK SA DW 50 DUP(?)(?) TOP EQU LENGTH SASTACK ENDSCODE SEGMENT ASSUME CS: CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,TOP子程序结构子程序结构 LEA SI,ARY1 MOV CX,LENGTH ARY1 CALL SUM LEA SI,ARY2 MOV CX,LENGTH ARY2 CA

38、LL SUM MOV AH,4CH INT 21HSUM PROC NEAR XOR AX,AXL1: ADD AX,WORD PTRSI INC SI INC SI LOOP L1 MOV WORD PTR SI,AX RETSUM ENDPCODE ENDS END START 本例是利用存储器来传递参数,调用前将数组的偏移地址放入本例是利用存储器来传递参数,调用前将数组的偏移地址放入SI中,在中,在过程中通过寄存器间址就可取得存储器中的操作数,并通过存储器返回。过程中通过寄存器间址就可取得存储器中的操作数,并通过存储器返回。子程序结构子程序结构本章小结本章小结q汇编语言程序格式(P124)pMASM中的表达式p伪指令语句pDOS系统功能调用和BIOS中断调用()p程序设计方法p宏汇编和条件汇编本章小结本章小结重点一:伪指令语句p数据定义语句:DB,DW,DDp标号赋值语句:EQU,p段定义语句: SEGMENNTENDSp段分配语句: ASSUMEp过程定义语句:PROCENDPp程序开始结束语句:ORG,END,NAME本章小结本章小结重点二:程序设计方法p顺序结构p分支结构p循环结构p子程序结构本章小结本章小结重点三:MASM中2类运算符p数值返回运算符p修改属性运算符编辑程序E.ASM文件汇编程序E.OBJ文件连接文件E.EXE文件A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论