版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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的各功能子程序。其中的各功能子程序。
2、其中 INT 21INT 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 回车符 BUFIN BUFIN1 BUFIN2 BUFINI 显示提示显示提示 DO YOU WANT TO INPUT STRING?(Y/N) 等待键盘输入应答等待键盘输入应答 Y/N 键盘输入键盘输入Y 显示提示显示提示 PLEASE INPUT STRING 键盘输入字符串存入键盘输入字符串存入BUFIN
4、 计算输入字符串长度,并将字符串计算输入字符串长度,并将字符串 结尾加结尾加 显示输入的字符串显示输入的字符串 返回返回DOS N DONE 功能号功能号 AH 09H 01H 09H 0AH 09H 4CH DATA SEGMENT STRING1DB 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 ENDS CODE
5、SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA STARTPROC FAR BEGING: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,01H01H INT 21H INT 21H ;从键盘输入;从键盘输入1 1个字符至个字符至ALAL
6、 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 ALMOV AL,BUFINBUFIN1 1 CBW CBW ;计算;计算BUFIN BUFIN 末地址末地址 LEA SILEA SI,BUFINBUFI
7、N2 2 ADD SIADD SI,AX AX ;SI SI 指向原输入回车位置指向原输入回车位置 MOV SIMOV SI, ;字符串结尾为;字符串结尾为 MOV AHMOV AH,09H09H LEA DXLEA DX,BUFINBUFIN2 2 INT 21H INT 21H ;显示输入的字符串,无长度;显示输入的字符串,无长度 DONEDONE:RETRET STARTSTARTENDPENDP CODECODEENDSENDS END BEGIN END BEGIN DATA SEGMENT STRING1DB DO YOU WANT TO INPUT DB STRING?(Y/N)
8、,0DH,0AH, STRING2DB PLEASE INPUT STRING. DB 0DH,0AH, BUFIN DB 20H,? ;20H为设置长度,?为实际输入长度 BUFINI DB 20H DUP(?) ;实际输入的字符串存放区 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA STARTPROC FAR BEGING:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES MOV ES,AX AX ;定义使用;定义使用DSDS,ESES LEA DXLEA DX,STRI
9、NG1STRING1 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 MOV AH,09H09H INT 21H INT 21H ;显示;显示STRING2STRING2提示提示 LEA DXLEA DX,BUFINBUFIN MOV AH MOV AH,
10、0AH0AH INT 21H INT 21H ;从键盘输入字符串至;从键盘输入字符串至BUFINBUFIN MOV AL MOV AL,BUFINBUFIN1 1 CBW CBW ;计算;计算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 ;显示输入的字符串,无长度;显示输入的
11、字符串,无长度 DONEDONE:MOV AH,4CHMOV AH,4CH INT 21H INT 21H RET RET STARTSTARTENDPENDP CODECODEENDSENDS END BEGIN END BEGIN 顺序结构顺序结构 S 1 S2 S3 顺序结构顺序结构 顺序结构顺序结构 顺序结构顺序结构 顺序结构顺序结构 例例1 1:两个两个32位无符号数的乘法位无符号数的乘法 AB CD * + B*D 部分积部分积1 最后乘积最后乘积 A*D 部分积部分积2 B*C部分积部分积3 A*C 部分积部分积4 B BX+0 +2 +4 +6 +8 +A +C +E A D
12、C * + 和和1 积积3 * 积积1 * 积积2 + 积积1H * 积积4 和和2H + 积积1L 积积1H和和1L 和和1H 和和2L 和和2H和和3L 和和3H 乘法运算过程示意图乘法运算过程示意图 顺序结构顺序结构 设地址指针设地址指针 被乘数的低被乘数的低16位送位送AX 乘数的低乘数的低16位位D送送SI 乘数的高乘数的高16位位C送送DI BD存部分积存部分积1 被乘数的高被乘数的高16位位A送送AX AD部分积部分积2 部分积部分积2L部分积部分积1H 进位加至部分和进位加至部分和1H,存内存存内存 BC部分积部分积3 部分积部分积3部分和部分和1,存内存存内存 AC部分积部分
13、积4 存进位存进位 部分积部分积4部分和部分和2H+ 进位和进位和3 存和存和3 返回返回 顺序结构顺序结构 DATA SEGMENT MULNUM DW 0000,0FFFFH,0000,0FFFFH,4DUP( ?) DATA ENDS STACK SEGMENT PARA STACK STACK STAK DB 100 DUP(?)(?) TOP EQU LENGTH STAK STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS: STACK, ES :DATA BEGIN: MOV AX, DATA ;送数据段段地址;送数据段段地址 MO
14、V DS,AX MOV ES, AX MOV AX,STACK ;送堆栈段段地址;送堆栈段段地址 MOV SS,AX MOV SP, OFFSET TOP ;堆栈段偏移量送;堆栈段偏移量送SP 顺序结构顺序结构 LEA BX,MULNUM MULU32: MOV AX ,BX ; B送送 AX MOV SI ,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
15、 ,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 ,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 ;
16、 部分积部分积4L与和与和2H相加相加 ADC DX ,0 MOV BX+0CH ,AX MOV BX+0EH ,DX ; 存和存和3 MOV AH,4CH INT 21H CODE ENDS END BEGIN 分支结构分支结构 图52 分支结构框图形式图52 分支结构框图形式 判定条件 Y YN N 判定条件 分支结构分支结构 例例3 3:在以:在以BUFBUF为首地址的内存,存放着一个长度为为首地址的内存,存放着一个长度为N N (N256)N39H (AL) 41H (AL)5AH DH+1 DL+1 (CX)=0 修改修改BX及及(CX)-1 N N N N N Y Y Y Y Y
17、A DH送内存送内存 A DL送内存送内存 AL=N-DH-DL AL送内存送内存 返回返回DOS 分支结构分支结构 要依次检查才能要依次检查才能 进入到要求的入口地址。进入到要求的入口地址。 分支结构分支结构 分支结构分支结构 分支结构分支结构 跳转表在内跳转表在内 存中的存放方法存中的存放方法 P0L P0H P1L P1H . . . . . . . . . BASE+0 BASE+2 P0 P1 LEA BX,BASE AND AL,0FH ADD AL,AL ADD BX,AX JMP WORD PTR BX 分支结构分支结构 图5-5 转移指令跳转表图5-5 转移指令跳转表 BAS
18、E1BASE1 JMP P1JMP P1 JMP P2JMP P2 JMP P5JMP P5 E9E9 P1低位 P1高位P1高位 E9E9 P2低位 P2高位P2高位 分支结构分支结构 分支结构分支结构 循环程序结构循环程序结构 例例4 4:首地址为首地址为BUFFERBUFFER的数组已按升序排好,长度为的数组已按升序排好,长度为N N (=10=10),在数组中查找数),在数组中查找数M M(=80=80),若找到则从数组),若找到则从数组 中删掉,否则将它插入正确的位置,中删掉,否则将它插入正确的位置,DXDX中记录数组最中记录数组最 后的长度。后的长度。 循环程序结构循环程序结构 9
19、8 10 25 36 98 90 82 70 58 53 48 AX CX=9 AX CX=8 AX CX=7 AX CX=6 AX CX=5 AX CX=4 AX CX=3 AX CX=2 AX CX=1 AX CX=0 AX=80 CX=10 DX=10 AX BUFFERSI 90 82 AX BUFFERSI-2 AX BUFFERSI-2 80 DX=11 AX BUFFERSI-2 若数组中若数组中 无无M 寻找插入位置寻找插入位置 SI=2*(DX1) CMP AX,BUFFERSI 搜索有无关键字搜索有无关键字 MOV DI,OFFSET BUFFER CLD REPNE SC
20、ASW 元素下移元素下移 MOV BX,BUFFERSI MOV BUFFERSI+2,BX 插入插入 MOV BUFFERSI+2,AX 循环程序结构循环程序结构 10 25 36 98 90 80 70 58 53 48 AX CX=9 DI=BUFFER+2 AX CX=8 DI=BUFFER+4 AX CX=7 DI=BUFFER+6 AX CX=6 DI=BUFFER+8 AX CX=5 DI=BUFFER+A AX CX=4 DI=BUFFER+C AX CX=3 DI=BUFFER+E AX = CX=2 DI=BUFFER+10H AX=80 CX=10 DI=BUFFER 9
21、0 98 BX=DI=(BUFFER+10H) DI-2 CX-1=1 BX=DI+2=(BUFFER+12H) DI-2 CX-1=0 DX=9 若数组中有数若数组中有数M 搜索有无关键字搜索有无关键字 MOV DI,OFFSET BUFFER CLD REPNE SCASW 搜索到,后续元素前移搜索到,后续元素前移 MOV BX,DI MOV DI-2,BX ADD DI,2 循环程序结构循环程序结构 初始化初始化 串扫描查找串扫描查找 找到找到 插在插在SI所所 指单元后指单元后 关键字关键字SI (CX)=0 数组元素下移数组元素下移 修改比较指针修改比较指针SI 数组长度数组长度+1
22、 设置串尾比较指针设置串尾比较指针SI DI 所指元素上移所指元素上移 修改比较指针修改比较指针DI N Y Y N Y 数组长度数组长度-1 (CX)-1=0 Y N N 结束结束 初始化:初始化: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 80 DATA ENDS CODE SEGEMENT ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC
23、FAR START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV 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,DX L1: CMP AX,BUFFERSI JL L2
24、;关键字比数组中某个字小,转;关键字比数组中某个字小,转L2 MOV BUFFERSI+2, AX ;大,则插在后面;大,则插在后面 JMP L3 L2: MOV BX,BUFFERSI ;数组下移一位;数组下移一位 MOV BUFFERSI+2, BX SUB SI,2 JMP L1 L3: ADD DX,1 ;修改长度;修改长度 JMP NEXT1 DEL: JCXZ NEXT ;找到,删此元素;找到,删此元素 DEL1: MOV BX,DI ;其后元素依次前移;其后元素依次前移 MOV DI-2,BX ADD DI,2 LOOP DEL1 NEXT: DEC DX ;改变数组长度;改变数
25、组长度 NEXT1: RET MAIN ENDP CODE ENDS END START 循环程序结构循环程序结构 循环程序结构循环程序结构 图图5 5- -8 8 循循环环程程序序结结构构图图 入口 初始化部分 循环体 修改参数 循环控制 出口 入口 初始化部分 循环体 修改参数 循环控制 出口 (a a)“先先执执行行,后后判判断断”结结构构(b b)“先先判判断断,后后执执行行”结结构构 循环程序结构循环程序结构 循环程序结构循环程序结构 图5-9 16进制数转化成ASCII码流程图图5-9 16进制数转化成ASCII码流程图 开始 初始化循环计数值 把最右面的数位转 换为ASCII码
26、加上7 出口 BX 循环左移一个数位 是 AF? 显示一个字符 循环计数值 0? N N Y Y Y Y N N 循环程序结构循环程序结构 循环程序结构循环程序结构 循环程序结构循环程序结构 循环程序结构循环程序结构 例:例:存储在存储在BLOCKBLOCK为首地址内存中为首地址内存中1010个个16bit16bit带符带符 号数,找出最大值后存在号数,找出最大值后存在MAXMAX单元中。单元中。 循环程序结构循环程序结构 AX 大数 CMP CMP 大数 BLOCK 取一次取一次 比较比较9次次 交换交换(待定待定) 循环程序结构循环程序结构 DATA SEGMENT ;数据段说明开始;数据
27、段说明开始 BLOCK DW 65C8H ,35 ,694AH,0A398H COUNT DW 10 MAX DW ? ;设置;设置MAX的内存空间的内存空间 DATA ENDS ;数据段说明结束;数据段说明结束 CODE SEGMENT ;代码段说明开始;代码段说明开始 ASSUME CS:CODE ,DS:DATA BEGIN: MOV AX,DATA MOV DS,AX ;设置本程序的;设置本程序的DS LEA BX, BLOCK ;本程序的运行程序开始;本程序的运行程序开始 MOV AX,BX INC BX INC BX MOV CX,COUNT AGAIN:CMP AX,BX JG
28、NEXT MOV AX,BX NEXT: INC BX INC BX LOOP AGAIN MOV MAX,AX ;本程序运行结束;本程序运行结束 MOV AH, 4CH ;调用内部中断返回;调用内部中断返回DOS INT 21H CODE ENDS ;代码段结束说明;代码段结束说明 END BEGIN ;编译结束说明;编译结束说明 循环程序结构循环程序结构 1.在DAT1 单元开始存放10字节(字)的有 符号(无符号数),统计正数(负数) 、奇数(偶数)个数、求和、平均值,结果 存在DAT2单元 2.在DATA 1单元开始存放10个字符串,统计 大写(小写、数字)的个数,结果存在 DATA2
29、单元 3.将一个字数据(AX)的十六进制数转换为 对应的ASIIC码,结果存在DATA单元。 循环程序结构循环程序结构 l 各重循环的初始条件的控制;各重循环的初始条件的控制; l 内循环可以嵌套在外循环中,也可以几个内循环可以嵌套在外循环中,也可以几个 内循环并列在外循环中,但各层循环之间不能交内循环并列在外循环中,但各层循环之间不能交 叉,内循环可以跳到外循环中,不可以从外循环叉,内循环可以跳到外循环中,不可以从外循环 直接跳进内层循环;直接跳进内层循环; l 不能让循环回到初始条件,以免出现死循不能让循环回到初始条件,以免出现死循 环。环。 如果一个循环程序的循环体内还包含有一个或多个循
30、环结构如果一个循环程序的循环体内还包含有一个或多个循环结构 的程序,那么这个程序称为双重或多重循环结构程序。我们先的程序,那么这个程序称为双重或多重循环结构程序。我们先 用软件延时程序来说明多重循环程序的结构。用软件延时程序来说明多重循环程序的结构。 SOFTDLY:MOV BL,10 DELAY: MOV CX,2801 WAIT0: LOOP WAIT0 ;内循环延时内循环延时 DEC BL JNZ DELAY 此程序每次内循环时,此程序每次内循环时,CX由由2801减至零,减至零,BL维持不变。外循环维持不变。外循环 进行进行10遍。遍。 此程序虽然简单,但是其结构是双重循环。此程序虽然
31、简单,但是其结构是双重循环。 循环程序结构循环程序结构 例例 内存DATA开始存放100 个单字节数据。编写程序统 计这些数据内“0”和“1”个 数相等的数据有多少,将结 果存入NUMB单元。完成此 例需要一个数据一个数据地 检查0和1是否相等,相等时 则计数加1,直到100个数据 检查完毕。 DATA:+015H +127H +294H +311H +43BH +548H +6. +7. +8. +9. +10. +11. +12. . . +99. 循环程序结构循环程序结构 DSEG SEGMENT DATA DB 15H,27H,94H ;共100个数 DB 11H,3B,48H,. N
32、UMB DB 0 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOVSI,OFFSET DATA MOVCL,100 XORAL,AL DATA:+015H +127H +294H +311H +43BH +548H +6. +7. +8. +9. +10. +11. +12. . . +99. 循环程序结构循环程序结构 RPT2:MOVCH,08H XORBH,BH MOVAH,SI RPT1:RORAH,1 JNCCHT1 INCBH CHT1:DECCH JNZRPT1 CMPBH,
33、04 JNZCHT2 INCAL CHT2:INCSI DECCL JNZRPT2 MOVDNUMB,AL MOVAH,4CH INT21H CSEGENDS ENDSTART DATA:+015H +127H +294H +311H +43BH +548H +6. +7. +8. +9. +10. +11. +12. . . +99. 循环程序结构循环程序结构 ADC BH,0 子程序结构子程序结构 子程序结构子程序结构 子程序结构子程序结构 循环程序结构循环程序结构 BUFFER STRING A4 2C 53 3B 41 34 43 32 33 35 42 33 循环程序结构循环程序结构
34、 主程序主程序 输入参数:输入参数:1、待转换的二进制数、待转换的二进制数AL 2、存放、存放ASCII码的地址指针码的地址指针 输出参数:输出参数:1、转换的、转换的ASCII码放入码放入SI间址间址 的内存的内存 2、修改后的、修改后的SI指针指针 16进制数首地址进制数首地址BXBX ASCIIASCII码码首地址首地址SISI 1616进制数长度进制数长度CXCX ASCII码长度码长度L2L2 取待转换数 ALDL 分离出低4位 分离出高4位右移四位 调用CHANGE子程序 (CX)- 1=0 结结 束束 AGAIN N 调用CHANGE子程序 Y (AL) 10 (AL)07HAL
35、 (AL)30HAL (AL)(SI)(SI) (SI)+1SI(SI)+1SI 返回DOS ADD_0 CHANGE子程序框图 Y N DATASEGMANT STRING DB 34H,98H BUFFERDB 2*2 DUP (?) ;设置;设置4字节存放空字节存放空 间间 DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA 循环程序结构循环程序结构 BEGIN:MOV AX,DATA MOV DS,AX ;置本程序的;置本程序的DS MOV CX,2 LEA BX,STRING ;置源操作数指针;置源操作数指针 LEA SI,BUFFER ;置目的操
36、作数指针;置目的操作数指针 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位到低位到低4 SHR AL,CL; 高高4位为位为0 POP CX; 原原CX恢复恢复 CALL CHANGE; 调子转换为调子转换为ASCII存入内存存入内存
37、 INC BX; 修改源操作数指针修改源操作数指针 LOOP AGAIN, 判循环终点判循环终点 MOV AH,4CH INT 21H 循环程序结构循环程序结构 CHANGE PROC;CHANGE子程序说明子程序说明 CMP AL,10 JL ADD_0 ADD AL,7; 操作数可用表达式,其中操作数可用表达式,其中 表表 示示ASCII码,结果是加码,结果是加07H ADD_0: ADD AL,30H MOV SI,AL;送结果送结果 INC SI RET CHANGE ENDP CODE ENDS END BEGIN 循环程序结构循环程序结构 子程序结构子程序结构 4 45 5 程序设
38、计方法程序设计方法 七、参数传递技术七、参数传递技术 (一)利用寄存器传递参数(一)利用寄存器传递参数 例如在某子程序中要对两个长度相同的数据缓冲区例如在某子程序中要对两个长度相同的数据缓冲区 进行操作,可在主程序中把缓冲区的长度和首址存入寄进行操作,可在主程序中把缓冲区的长度和首址存入寄 存器中。存器中。 MOV CX,LENGTH MOV BX,OFFSET BUFFER1 MOV SI, OFFSET BUFFER2 CALL SUBR 子程序结构子程序结构 例:编程实现数组段分别求和(不计溢出)。例:编程实现数组段分别求和(不计溢出)。 DATA SEGMENT ARY1 DW 100
39、 DUP(?)(?) SUM1 DW ? ARY2 DW 100 DUP(?)(?) SUM2 DW ? DATA ENDS STACK SEGMENT STACK SA DW 50 DUP(?)(?) TOP EQU LENGTH SA STACK ENDS CODE SEGMENT ASSUME CS: CODE,DS:DATA,SS:STACK START: 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,AR
40、Y2 MOV CX,LENGTH ARY2 CALL SUM MOV AH,4CH INT 21H SUM PROC NEAR XOR AX,AX L1: ADD AX,WORD PTRSI INC SI INC SI LOOP L1 MOV WORD PTR SI,AX RET SUM ENDP CODE ENDS END START 本例是利用存储器来传递参数,调用前将数组的偏移地址放入本例是利用存储器来传递参数,调用前将数组的偏移地址放入SI中,在中,在 过程中通过寄存器间址就可取得存储器中的操作数,并通过存储器返回。过程中通过寄存器间址就可取得存储器中的操作数,并通过存储器返回。 子程序结构子程序结构 本章小结本章小结 q汇编语言程序格式(P124) pMASM中的表达式 p伪指令语句 pDOS系统功能调用和BIOS中断调用() p程序设计方法 p宏汇编和条件汇编 本章小结本章小结 重点一:伪指令语句 p数据定义语句:DB,DW,DD p标号赋值语句:EQU, p段定义语句: SEGMENNTENDS p段分配语句: ASSUME p过程定义语句:PROCENDP p程序开始结束语句:ORG,END,NAME 本章小结本章小结 重点二:程序设计方法 p顺序结构 p分支结构 p循环结构 p子程序结构 本章小结本章小结 重点三:MASM中2类运算符 p数值返回运算符 p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市阳河大桥施工组织设计方案
- 带状疱疹全程管理指南
- 住院患者跌倒预防循证管理方案的构建与实践
- 2025《窦娥冤》中窦娥三桩誓愿的文化寓意与艺术效果课件
- 电气工程技术人员安全生产职责培训
- 水电暖行政主管安全管理职责培训课件
- 固定式塔式起重机安全操作规程培训
- 核医学科仪器设备全流程管理制度培训
- 燃运正值班员安全职责培训
- 2025年巡检员安全职责与规范培训
- 中学生防震减灾知识
- TD-T 1041-2013 土地整治工程质量检验与评定规程
- 农网改造施工工艺
- TCRHA 015-2023 成人经鼻高流量氧疗护理规范
- GB/T 32764-2016边鸡
- GB/T 224-2019钢的脱碳层深度测定法
- 机械设备、人员一览表
- 函数y=Asin(wx+φ)的图象与性质优质课比赛课件
- 2022年环境监测技能知识考试参考题500题(含各题型)
- 交通索道桥(悬索桥)工程专项施工方案
- 《红楼梦》 简答题 试卷及答案 汇编全集(第1-80回合集资料)
评论
0/150
提交评论