每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 第五章程序设计 信息与通信工程学院
第五章 程序设计
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 程序是计算机命令(语句)的有序集合。 汇编语言与高级语言区别 汇编语言是面对机器的,要求程序员对机器 指令系统、内存空间分配了如指掌,地址是汇编 语言关键所在,执行速度快,但可移植性差。 高级语言是面向过程的,程序员没必要了解 内存分配,更符合人的思维方式,执行速度相对 慢一些,可移植性好。 信息与通信工程学院
程序是计算机命令(语句)的有序集合。 汇编语言与高级语言区别 汇编语言是面对机器的,要求程序员对机器 指令系统、内存空间分配了如指掌,地址是汇编 语言关键所在,执行速度快,但可移植性差。 高级语言是面向过程的,程序员没必要了解 内存分配,更符合人的思维方式,执行速度相对 慢一些,可移植性好
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 1简单程序(顺序程序) 计算机执行程序“从头到尾”,逐条顺序执行, 直到程序结束。 【例1】用数据运算指令,对两个16位数做加法运 算。这两个数从地址10050H开始连续存放,低位在 小地址一端,结果存放在这两个数之后。 信息与通信工程学院
计算机执行程序“从头到尾”,逐条顺序执行, 直到程序结束。 1.简单程序(顺序程序) 【例1】用数据运算指令,对两个16位数做加法运 算。这两个数从地址10050H开始连续存放,低位在 小地址一端,结果存放在这两个数之后
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY MOVAX 1000H MOVDSAX DS=1000H MOVSISOH 被加数指针SI=50H MOVDISZH ;加数指针DI=52H MOBX,54H;和的指针BX=54H CLC ;清CF XOR AXAX ;清AX MOVAX,S;取一个字到AX ADC AX,DI AX←AX+[D+CF MOVIBXLAX 存一个字到[BX HLT ;暂停 信息与通信工程学院
MOVAX,1000H MOV DS,AX ;DS=1000H MOVSI,50H ;被加数指针SI=50H MOVDI,52H ;加数指针DI=52H MOVBX,54H ;和的指针BX=54H CLC ;清CF XOR AX,AX ;清AX MOVAX,[SI] ;取一个字到AX ADC AX,[DI] ;AX←AX+[DI]+CF MOV[BX],AX ;存一个字到[BX] HLT ;暂停
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 例2】将内存10050H单元的内容拆成两段,每 段4位,并将它们分别存入内存10051H和10052H单 元。即10050H单元中的低4位放入10051H的低4位, 10050H单元中的高4位放入10052H的低4位,而 10051H和10052H的高4位均为零。 信息与通信工程学院
【例2】将内存10050H单元的内容拆成两段,每 段4位,并将它们分别存入内存10051H和10052H单 元。即10050H单元中的低4位放入10051H的低4位, 10050H单元中的高4位放入10052H的低4位,而 10051H和10052H的高4位均为零
每)天半紫大学 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