第7讲25.85.12汇编状态标志与dos指令调用.ppt

上传人:sccc 文档编号:6107689 上传时间:2023-09-25 格式:PPT 页数:26 大小:197.55KB
返回 下载 相关 举报
第7讲25.85.12汇编状态标志与dos指令调用.ppt_第1页
第1页 / 共26页
第7讲25.85.12汇编状态标志与dos指令调用.ppt_第2页
第2页 / 共26页
第7讲25.85.12汇编状态标志与dos指令调用.ppt_第3页
第3页 / 共26页
第7讲25.85.12汇编状态标志与dos指令调用.ppt_第4页
第4页 / 共26页
第7讲25.85.12汇编状态标志与dos指令调用.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《第7讲25.85.12汇编状态标志与dos指令调用.ppt》由会员分享,可在线阅读,更多相关《第7讲25.85.12汇编状态标志与dos指令调用.ppt(26页珍藏版)》请在三一办公上搜索。

1、1,5.8 状态标志位操作指令,8086/8088有7条状态标志位控制指令,它们可以直接和独立地对8086CPU中的某一状态标志位进行控制,用来设置或改变状态标志位的状态。,2,5.11 简单的I/O功能调用,设置断点 DOS功能调用,3,调用方法:INT 3功能:停止程序运行,返回DEBUG入口条件:无出口条件:无说明:欲使程序结束运行从而检查运行结果时,则不应退出DEBUG,这时使用本功能。在以后上机实验时,多数是使用本功能来结束程序运行。,设置断点,4,DOS功能调用,DOS不仅为用户提供了许多使用的命令,还提供了上百个常用的子程序。对这些子程序的调用,称为系统功能调用(实际是中断指令I

2、NT 21H)。主要包括磁盘读写、控制管理、内存管理、基本的I/O管理等。所有子程序从1号开始顺序编号,称为DOS功能调用号。,5,DOS功能调用的过程,调用过程为:DOS功能调用号送AH寄存器;如果需要,按要求给定入口条件(有的不需要入口条件);写入中断指令INT 21H。调用结束,按功能使用其出口条件。,6,DOS功能调用,1、单字符键盘输入-1号功 能:从键盘上接收一个字符,并在屏幕上显示出来入口条件:无出口条件:AL=ASCII码调用方法:,MOV AH,1INT 21H,7,DOS功能调用,2、单字符显示器输出-2号功 能:在屏幕上光标处显示1个字符入口条件:要显示的字符的ASCII

3、码在DL中出口条件:无调用方法:,MOV AH,2MOV DL,AINT 21H,8,DOS功能调用,3、程序结束退出-4CH号功能:结束程序运行,将控制权交给调用它的程序入口条件:AL=返回码出口条件:无调用方法:MOV AH,4CHMOV AL,0INT 21H欲使程序结束运行时,使用本功能。,9,DOS功能调用,4、多字符输入0AH号 功 能:多个字符输入到缓冲区,以回车结束 入口条件:DS:DX输入缓冲区首地址 出口条件:DS:DX输入字符串所在缓冲区首地址注意:缓冲区第1字节存放预定字符个数,最多255个缓冲区第2字节保留,用于调用返回时存放实际输入的字符个数缓冲区第3字节开始,存放

4、输入的字符缓冲区要考虑留1个字节作为回车符,DSEG SEGMENTBUF DB 50 DUP(0)DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DSEG MOV DS,AX LEA DX,BUF MOV BUF,20 MOV AH,0AH INT 21HCSEG ENDS END START,10,DOS功能调用,5、多字符输出9号功 能:多个字符输出到屏幕显示入口条件:DS:DX输出字符缓冲区首地址出口条件:无注意:该功能对输出字符的个数没有要求,但输出字符串要以$结束,11,5.12 顺序结构程序举例,例5.1 计算y=

5、-x。设x为三个字节长的数据,存于DATA1开始的单元。结果存入DATA2开始的单元。,计算-x,就是对x取补。,12,一个数据取补,就是将这个数据包括符号位在内取反加1,或者用0 减去这个数据。带符号数据在机内用补码形式表示时,若原数据为负数,经取补操作后变为其绝对值,若原数据为正数,经取补操作后变为绝对值与其相等的负数。取补与补码是两个不同的概念,一个数据的补码,是用补码形式表示这个数据,当数据为正时,它的补码就是数据本身;当数据为负时,把其原码表示形式除符号位外取反加1,或者将其绝对值进行取补所得结果为其补码。例如,用一个字节(8位二进制位)表示数据已知:N1=00000101,取补后N

6、1=11111011 N2=11111011,取补后N2=00000101,取补的概念:,13,将数据分为三种情况:(1)最低字节不为0时,将最低字节取补,高、中字节取反;NOT,NOT,NEG例如:01001100 00111100 00010000按位取反后:10110011 11000011 11101111再+1:10110011 11000011 11110000(2)最低字节为0,中间字节非0,则中间节和低字节取补,高字节取反;NOT,NEG,NEG(3)中间字节与低字节均为0 时,3个字节均取补。NEG,NEG,NEG,分析,14,(1)最低字节取补;(2)进位取反;(3)中间字

7、节取反,取反的结果加进位;(4)高字节取反,取反结果加进位。,算法,(1)最低字节取补;(2)进位取反;(3)中间字节取反,取反的结果加进位;(4)高字节取反,取反结果加进位。,低字节不为0,低字节为0,中字节不为0,中低字节为0,高字节不为0,NEG,CF=1,CF=0,NOT+0CF=0,NOT+0,NEG,CF=0,CF=1,NOT+1=NEGCF=0,NOT+0,NEG,CF=0,CF=1,NOT+1=NEGCF=1,NOT+1=NEG,1:;*EXAM 5.1.1*2:SSEGSEGMENT STACK;堆栈段3:STK DB 20 DUP(0)4:SSEG ENDS5:DSEG S

8、EGMENT;数据段6:DATA1 DB 35H,26H,03H;(032635H)7:DATA2 DB 3 DUP(0)8:DSEG ENDS9:CSEG SEGMENT;代码段 10:ASSUME CS:CSEG,DS:DSEG11:ASSUME SS:SSEG12:MBNEG:MOV AX,DSEG;段寄存器初值13:MOV DS,AX14:MOV AX,SSEG15:MOV SS,AX16:MOV SP,SIZE STK;设置堆栈指针,17:MOVAL,DATA1;读入数据低字节 18:MOVAH,DATA1+1;读入数据中字节19:MOVBL,DATA1+2;读入数据高字节 20:N

9、EGAL;取补低字节21:CMC;进位取反22:NOTAH;中字节取反23:ADCAH,0;加进位24:NOTBL;高字节取反25:ADCBL,0;加进位 26:MOVDATA2,AL;保存结果 27:MOVDATA2+1,AH28:MOVDATA2+2,BL29:MOVAX,4C00H30:INT21H31:CSEGENDS32:ENDMBNEG,17:MOVAL,DATA1;读入数据低字节 18:MOVAH,DATA1+1;读入数据中字节19:MOVBL,DATA1+2;读入数据高字节 20:NEGAL;取补低字节21:CMC;进位取反22:NOTAH;中字节取反23:ADCAH,0;加进

10、位24:NOTBL;高字节取反25:ADCBL,0;加进位 26:MOVDATA2,AL;保存结果 27:MOVDATA2+1,AH28:MOVDATA2+2,BL29:MOVAX,4C00H30:INT21H31:CSEGENDS32:ENDMBNEG,MOVAX,WORD PTR DATA1,MOVWORD PTR DATA2,AX,17:LEASI,DATA1;取原数据首址18:LEADI,DATA2;取存放结果首址19:MOVAX,SI;读入数据中低字节20:NEGAX21:CMC22:INCSI;地址指针增量23:INCSI24:MOVBL,SI;读入数据高字节25:NOTBL26:

11、ADCBL,027:MOVDI,AX;存放结果中低字节28:INCDI 29:INCDI 30:MOVDI,BL;存放结果高字节 31:MOVAX,4C00H33:INT21H33:CSEGENDS34:ENDMBNEG,使用寄存器间接寻址方式,17:LEASI,DATA1;取原数据首址18:LEADI,DATA2;取存放结果首址19:MOVAX,SI;读入数据中低字节20:NEGAX21:CMC22:INCSI;地址指针增量23:INCSI24:MOVBL,SI;读入数据高字节25:NOTBL26:ADCBL,027:MOVDI,AX;存放结果中低字节28:INCDI 29:INCDI 30

12、:MOVDI,BL;存放结果高字节 31:MOVAX,4C00H33:INT21H33:CSEGENDS34:ENDMBNEG,使用寄存器间接寻址方式,ADD SI,2,?,ADD DI,2,?,17:LEASI,DATA1;取原数据首址18:LEADI,DATA2;取存放结果首址19:MOVAX,SI;读入数据中低字节20:NEGAX21:CMC22:INCSI;地址指针增量23:INCSI24:MOVBL,SI;读入数据高字节25:NOTBL26:ADCBL,027:MOVDI,AX;存放结果中低字节28:INCDI 29:INCDI 30:MOVDI,BL;存放结果高字节 31:MOVA

13、X,4C00H33:INT21H33:CSEGENDS34:ENDMBNEG,使用变址寻址方式,MOV BL,SI+2,MOV DI+2,BL,22,17:LEASI,DATA1;取原数据首址18:LEADI,DATA2;取存放结果首址19:MOVAX,SI;读入数据中低字节20:NEGAX21:CMC24:MOVBL,SI+2;读入数据高字节25:NOTBL26:ADCBL,027:MOVDI,AX;存放结果中低字节30:MOVDI+2,BL;存放结果高字节 31:MOVAX,4C00H33:INT21H33:CSEGENDS34:ENDMBNEG,使用变址寻址方式(DI=SI+3),MOV

14、 SI+3,AXMOV SI+5,BL,23,17:LEASI,DATA1;取原数据首址18:MOVAX,0;AX清019:SUB AX,SI20:MOV SI+3,AX21:MOVBL,0;读入数据高字节22:SBBBL,SI+223:MOVSI+5,BL;存放结果高字节 24:MOVAX,4C00H25:INT21H26:CSEGENDS27:ENDMBNEG,换个算法(0-X),24,17:LEASI,DATA1;取原数据首址18:MOVAX,0;AX清019:SUB AX,SI20:MOV SI+3,AX21:MOVBL,0;读入数据高字节22:SBBBL,SI+223:MOVSI+5

15、,BL;存放结果高字节 24:MOVAX,4C00H25:INT21H26:CSEGENDS27:ENDMBNEG,XOR AX,AX,XOR BL,BL,换个算法(0-X),25,17:LEASI,DATA1;取原数据首址18:MOVAX,0;AX清019:SUB AX,SI20:MOV SI+3,AX21:MOVBL,0;读入数据高字节22:SBBBL,SI+223:MOVSI+5,BL;存放结果高字节 24:MOVAX,4C00H25:INT21H26:CSEGENDS27:ENDMBNEG,XOR AX,AX,XOR BL,BL,换个算法(0-X),3BYTE,4T2BYTE,3T,2BYTE,4T2BYTE,3T,26,17:MOVAX,WORD PTR DATA1 19:SUB WORD PTR DATA2,AX20:MOV AL,DATA1+221:SBBDATA2+2,AL24:MOVAX,4C00H25:INT21H26:CSEGENDS27:ENDMBNEG,换个算法(0-X,利用结果单元已经是0),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号