预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共67页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

06十一月2024标准流程图符号汇编语言程序的基本结构例.顺序结构程序COSEGSEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK BEING: MOV AX,DATA MOV DS,AX MOV BX,OFFSETTABLE MOV AH,0 MOV AL,HEX ADD BX,AX MOV AL,[BX] MOV ASCI,AL MOV AH,4CH INT 21H COSEG ENDS END BEING当改变了EIP或CS 就改变了程序的执行顺序 即实现了程序的控制转移第5章控制转移和程序结构5.1目标地址寻址方式5.1.1程序转移范围5.1.2目标地址寻址方式1.相对寻址方式2.直接寻址方式3.间接寻址方式5.1.3无条件转移指令JMPJMP指令的4种类型1.段内转移——(1)相对寻址注意例1.段内直接短转移 JMPSHORTnext 例2.段内直接近转移 JMPNEARPTRNEXT 设(1)标号NEXT的EA=1000H (2)JMP指令的当前IP为0009H 求:位移量=? 指令代码E9F70F(代表JMP1000H) 1.段内转移——(2)间接寻址例1. 设CS=3000H,IP=2400H,BX=3100H JMPBX 指令执行后,IP=? 例2. 设DS=2000H,BX=1000H,[21020H]=34H,[21021H]=12H JMPWORDPTR[BX+20H] 指令执行后,IP=? [例题5-1]无条件转移程序-12.段间转移——(1)直接寻址2.段间转移——(2)间接寻址例. MOV SI,0100H JMP DWORDPTR[SI] 执行这段程序后: (a)把DS:[SI]即DS:0100H和DS:0101H两单元的字送?; (b)而把DS:0102H和DS:0103H两单元的字送?; (c)程序转入由新的CS和新的IP决定的目标地址。[例题5-1]无条件转移程序-25.2分支程序结构5.2.1条件转移指令Jcc1.cc转移条件分类(1)单个标志状态单个标志状态作为条件的功能例1.单个条件标志作为条件 (a) ADD AL,AL JC TOOBIG ;若有进位,转移至TOOBIG (b) CMP AL,BL JZ ZERO ;若相等,则转移至ZERO [例题5-2]实现指令CBW功能的程序-1[例题5-2]实现指令CBW功能的程序-2[例题5-2]实现指令CBW功能的程序-3[例题5-2]实现指令CBW功能的程序-4[例题5-3]实现奇偶校验程序-1[例题5-3]实现奇偶校验程序-2[例题5-4]统计“1”位个数程序-1[例题5-4]统计“1”位个数程序-2(2)两数大小关系两数大小关系作为条件的功能例1.两数大小关系作为条件 按递增序排列两个无符号数,第一个数偏移地址BX,第二个数偏移地址DI。 MOV AX,[BX] CMP AX,[DI] JBE DONE ;第一个数低于或等于第二个 XCHG AX,[DI] ;第一个数大于第二个,交换 MOV [BX],AX …… DONE: ……例2.比较01H和0FEH两个数的大小 M0VAL,01H CMPAL,0FEH 设执行后:AL=01H,CF=1,OF=0,SF=0,ZF=0 (a)若01H和0FEH为无符号数 判断大小:“高于”或“低于”等指令(JA/JNBE) 转移标志位:CF、ZF (b)若01H和0FEH为带符号数 判断大小:“大于”或“小于”等指令指令(JG/JNLE) 转移标志位SF、OF、ZF条件跳转指令的测试和转移条件5.2.2单分支结构 5.2.3双分支结构 5.2.4多分支结构5.2.2单分支结构5.2.3双分支结构[例题5-5]比较两数大小程序[例题5-6]求绝对值程序[例题5-7]BCD码显示程序[例题5-8]显示数据最高位程序-1[例题5-8]显示数据最高位程序-2[例题5-8]显示数据最高位程序-3[例题5-9]有符号数运算溢出程序例1. 求补码数[X]补的绝对值,并送回原处。DATAS SEGMENT XADR DW3456H ;设[X]补=3456H DATAS ENDS STACKS SEGMENT STACK BOTTOW DW 256DUP(?) ;定义堆栈段,预留256个单元 TOP = $-BOTTOW STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,STACKS ;将堆栈段段