每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY MOV AX 1000H MOV DS AX DS=1000H MOV SI,50H;需拆字节的指针S|=50H MoAL,[s;取一个字节到AL中 AND AL OFH 把AL的前4位清0 MO[s|],AL;把得到的后4位放到10051H单元 MoAL,[S;再取出需拆字节放到AL中 MOV CL 4 SHR AL,cL;逻辑右移四次,前4位补0 Mov[SH2],AL;放入10052H单元 HLT 信息与通信工程学院
MOV AX , 1000H MOV DS , AX ;DS=1000H MOV SI , 50H ;需拆字节的指针SI=50H MOV AL , [SI] ;取一个字节到AL中 AND AL , 0FH ;把AL的前4位清0 MOV [SI+1] , AL ;把得到的后4位放到 10051H单元 MOV AL , [SI] ;再取出需拆字节放到AL中 MOV CL , 4 SHR AL , CL ;逻辑右移四次,前4位补0 MOV [SI+2] , AL ;放入10052H单元 HLT
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 2分支程序 分支程序是利用条件转移指令,使程序执行到某 指令后,根据条件是否满足,来改变程序的执行次序。 程序使计算机有了判断的功能。经常先用比较指令或 数据操作及位检测指令改变标志寄存器各个标志位。 然后用条件转移指令进行分支 【例1】求AX累加器和BX寄存器中两个无符号数之 差的绝对值,结果放在内存2800H单元中。 信息与通信工程学院
分支程序是利用条件转移指令,使程序执行到某一 指令后,根据条件是否满足,来改变程序的执行次序。 程序使计算机有了判断的功能。经常先用比较指令或 数据操作及位检测指令改变标志寄存器各个标志位。 然后用条件转移指令进行分支。 【例1】求AX累加器和BX寄存器中两个无符号数之 差的绝对值,结果放在内存2800H单元中。 2.分支程序
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 开始 初始化:除CF AE≥0? 否 足 E内存(2800和(2801H)单元 一内存(2800)和(2801H)单元 齿停 信息与通信工程学院
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY CLC 清除CF MOV CX AX SUB AX,BX;AX←AX一Bx,影响CF JCAA;CF=1转AA去执行(即AX<Bx时转移) MoVD,2800H;结果指针D|=2800H Mo[D,AX;结果送到2800H和2801H单元 JMP LP ;暂停 AA: SUB BX CX BX+Bx--CX MOV DI 2800H MOV [DI, BX LP. HLT 信息与通信工程学院
CLC ;清除CF MOV CX , AX SUB AX , BX ;AX←AX-BX,影响CF JC AA ; CF=1转AA去执行(即AX<BX时转移) MOV DI , 2800H ;结果指针DI=2800H MOV [DI] , AX ;结果送到2800H和2801H单元 JMP LP ;暂停 AA: SUB BX , CX ;BX←BX-CX MOV DI , 2800H MOV [DI] , BX LP: HLT
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 【例2】编制程序,从外设71号端口中取一个数M, 判断其值是否在10和20之间,即10≤M<20。如果 M≌20H,则送0FFH给外设73H端口;如果M<10, 则送00H给外设73H;如果10≤M<20,则送88H给外 设73H。 START:NAL,71H;将7H端口的字节读入AL CLC 清除CF CMP AL,10:AL←AL-10 JC LP1 小于10转LP1 CMP AL,20AL←AL-20 JC LP2 ;10≤AL<20转LP2 MOV BL0FFH;将0FFH送入BL寄存器 LP3: MOV AL BL 信息与通信工程学院
【例2】编制程序,从外设71号端口中取一个数M, 判断其值是否在10和20之间,即10≤M<20。如果 M≥20H,则送0FFH给外设73H端口;如果M<10, 则送00H给外设73H;如果10≤M<20,则送88H给外 设73H。 START: IN AL,71H ;将71H端口的字节读入AL CLC ;清除CF CMP AL,10 ; AL←AL-10 JC LP1 ; 小于10转LP1 CMP AL,20 ; AL←AL-20 JC LP2 ; 10≤AL<20转LP2 MOV BL,0FFH ;将0FFH送入BL寄存器 LP3: MOV AL,BL