汇编程序设计.doc
《汇编程序设计.doc》由会员分享,可在线阅读,更多相关《汇编程序设计.doc(13页珍藏版)》请在沃文网上搜索。
1、分支结构设计实现分支的方法:1、比较/转移法2、跳转表转移法:比较转移指令可嵌套,但程序结构复杂,跳转表可使程序结构清晰。一、比较转移法例题例1:X为任意有符号字节数,若X为负数,则将其取补码,否则和Y相加,和存入AX中。部分程序如下:MOV AL,XCMP AL,0JGE ADDTNEG ALMOV X,ALJMP EXITADDT: ADD AL,Y ADC AH,0EXIT:例2:字节单元n1、n2中存放无符号数(1) 若两个均为偶,分别加1送d1、d1均为奇数,直接送d1、d2一奇一偶,则把奇d1,偶d2。部分程序如下:MOV AL,N1MOV AH,N2TEST AL,01HJNE
2、L1INC ALINC AHJMP ENDOL1:XCHG AL,AHEND:MOV D1,AL MOV D2,AH例3:在某串中查找某个特定字符,找到显示Y,未找到显示N。分析:在串中依次比较 处理:用到的指令是SCASB和REPNE,用到的寄存器:AL(AX)、ES、DI、CX,DF。DATA SEGMENTSTRING DB How are you!,welcom to china!N EQU $-STRING ; 取得数组长度DATA ENDSCODE SEGMENT ASSUME CS:CODE , ES:DATA ;START: MOV AX,DATA MOV ES,AX LEA
3、DI,STRING MOV CX,N CLD MOV AH,1 INT 21H REPNE SCASB JZ FOUND MOV DL,N JMP DISPFOUND: MOV DL,YDISP: MOV AH,2 INT 21H MOV AH,4CH INT 21HCODE ENDS END START二、利用跳转表实现多路分支跳转表是在某一内存区域顺序排列的一组有规律的入口地址(可以是标号)如是段内分支,每个地址占两个单元(IP)如是段间分支,每个地址占4个单元(CS:IP)采用这种方法步骤:将各标号作为操作数进行定义(段内、段间),关键利用JMP指令跳转到满足条件的各标号处(如何获取标号
4、的问题,以往JMP指令后仅接着就是标号),可采用变址寻址、寄存器间接寻址、基址变址的方式例1:书147方法1:变址寻址DATA SEGMENTDATATAB DW ROUTINE 1各标号在数据段定义 DW ROUTINE 2 DW ROUTINE 8DATA ENDSCODE SEGMENTMAIN PROC FAR ASSUME START: PUSH DS SUB BX,BX PUSH BX MOV BX,DATA MOV DA,BX CMP AL,0 JE CONT MOV SI,0LP:SHR AL,1JNB NOT_YETJMP DATATABSINOT_YET: ADD SI,T
5、YPE DATATABJMP LPCONT:ROUTINE1:ROUTINE2:ROUTINE8:RETMAIN ENDPCODE ENDS END START方法2:寄存器间接寻址CMP AL,0 CMP AL,0 JE CONTJE CONTMOV SI,0LEA BX,DATATABLP:SHR AL,1LP:SHR AL,1JNB NOT_YETJNB NOT_YETJMP DATATABSIJMP WORD PRT BX 例2:根据AL(1=AL=8)中的值跳转到相应的标号(SUB1,SUB2)TABLE DW SUB1各标号在数据段定义 SUB2 SUB8DEC ALSHL AL,
6、1MOV AH,0MOV SI,AXLEA BX,TABLEJMP WORD PTR BX+SISUB1:SUB2:SUB8:循环程序设计1、初始化部分 设置初始值2、循环工作部分 具体的操作和运算3、循环修改部分 为下一次循环而修改某些参数4、循环控制部分 判断循环继续还是结束控制方法:(1)计数控制:减、增 (2)条件控制 (3)逻辑尺控制一、计数控制(控制次数可预先判别)单循环例1:将以s1为起始地址的26个字母依次送到以s2为起始地址的联系单元中DATA SEGMENTS1 DB ABCDXYZDATA ENDSESTRA SEGMENTS2 26 DUP(?)ESTRA ENDS方法
7、1:采用变址寄存器间接寻址方法 方法2:采用变址+偏移量寻址方法MOV SI,OFFSET S1 MOV SI,0 MOV DI,OFFSET S2 MOV DI,0 MOV CX,26 MOV CX,26LOP1: MOV AL,SI LOP1:MOV ,S1SI MOV ES:DI,AL MOV ES:S2DI INC SI INC SI INC DI INC DI LOOP LOP1 LOOP LOP1方法3:基址+变址 方法4:串处理MOV BX,OFFSET S1 LEA SI,S1 MOV BP,OFFSET S2 LEA DI,S2 MOV SI,0 MOV CX,26MOV D
8、I,0 CLDMOV CX,26 REP MOVSB LOP1:MOV AL,BX+SI MOV ES:BP+DI,ALINC SIINC DI LOOP LOP1例2:书150页(稍作修改)。试编制一个程序,把BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来。CODE SEGMENT ASSUME CS:CODESTART: SUB AX,AX MOV BX,1110100001000110B MOV CH,4LP:MOV CL,4ROL BX,CLMOV AL,BLAND AL,0FHADD AL,30HCMP AL,3AHJL PRINTAADD AL,07HPRINTA: MO
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编程序 设计