第3章微型计算机原理及应用.ppt

第3章微型计算机原理及应用

3. 循环控制指令 该指令在循环程序中用来控制循环,其控制转向的目标地址是以当前IP内容为中心的-128~+127范围内。循环次数必须预先送入CX寄存器中。 LOOP LABEL ;CX减1不为0则转至目标地址继续循环,否 则退出循环,执行下一条指令。 LOOPZ LABEL;CX减1不为0,且ZF=1的条件下,才转移 至目标 地址继续循环;若CX=0或者ZF= 0,则退出循环。 3.3.5 程序控制指令 4. 过程调用和返回 编程时,为节省内存单元,常将程序中常用到的具有相同功能的部分独立出来,编写成一个模块,称为子程序(或过程)。 段内直接调用:CALL NEAR PROC 段间直接调用:CALL FAR PROC 返回指令:RET CALL 1000H ;段内直接调用,调用地址在指令中。 CALL AX ;段内间接调用,调用地址在AX中 CALL 2500:3600H ;段间直接调用,调用的段地址和偏移 量都在 指令中 3.3.5 程序控制指令 汇编语言程序上机过程 1、在运行窗口中输入“COMMAND” 2、进入“command prompt”窗口 3、依次输入“D:”、“CD AS”命令进入“D:/AS”文件夹 4、输入“EDIT”命令进入汇编语言编辑环境,选择“文件”菜单的“NEW”或者“OPEN”命令编辑或修改汇编程序编辑完成后,选择“文件”菜单的“SAVE”命令进行保存(必需带后缀名),并退出。 5、运行“MASM”宏汇编程序进行编译,分别生成“.OBJ”、“.LST”和“.CRF”文件。若有错误,则返回“EDIT”环境进行修改,若无错误则进入下一步。 6、运行“LINK” 程序对目标文件“.OBJ”进行连接,生成可执行文件“.EXE” 。 6、运行“DEBUG” 反汇编程序进行调试。 CS IP FLAG * [例] OR AX,[DI] OR CL,0FH OR AX,AX OR AL,AL JPE GOON OR AL,80H GOON:…. 偶校验转移(PF=1) 将一个二进制数9变为字符‘9’ ? 3.3.3 逻辑运算和移位指令 “非”运算指令 格式:NOT OPRD 操作:操作数按位取反再送回原地址 指令中的操作数不能是立即数 指令的执行对标志位无影响 例:NOT BYTE PTR[BX] “异或”运算指令 格式: XOR OPRD1,OPRD2 操作: 两操作数相“异或”,结果送目标地址 操作数自身相异或,结果为“0” XOR AX,AX 3.3.3 逻辑运算和移位指令 “测试”指令 格式: TEST OPRD1,OPRD2 操作: 执行“与”运算,但运算的结果不送回目标地址。 应用:常用于测试某些位的状态 “测试”指令例 从地址为38F0H的端口中读入一个字节数,如果该数的bit1位为1,则可从38FEH端口将DATA为首地址的一个字输出,否则就不能进行数据传送。 编写相应的程序段。 3.3.3 逻辑运算和移位指令 [例] 开 始 取待输出数的偏移地址 读入状态字 测试bit1位状态 Bit1=1? 取输入口地址 取输出口地址 输出一个字 N Y 3.3.3 逻辑运算和移位指令 “测试”指令例 LEA SI,DATA MOV DX,38F0H WATT:IN AL,DX TEST AL,02H JZ WATT ;ZF=1转移 MOV DX,38FEH MOV AX,[SI] OUT DX,AX 3.3.3 逻辑运算和移位指令 TEST指令和AND指令执行同样的操作,但TEST指令不送回操作结果,而仅仅影响标志位。 TEST AX,8000H ;如AX的最高位为1,则ZF=0,否则 ZF=1   在程序设计中,一般用AND指令对一个数据的指定位清0。OR指令常用来对一些指定位置1。XOR指令常用在程序的开头使某个寄存器清

文档评论(0)

1亿VIP精品文档

相关文档