- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章程序设计3
* 常用DOS功能调用:DOS 规定用中断命令INT 21H 进入各功能调用子程序的总入口,再为每个功能调用规定一个功能号,以便进入相应的子程序入口。 DOS 功能调用方法 1)将要调用的功能的功能号送入AH寄存器; 2)根据所调用功能的规定设置输入参数; 3)用INT 21H 指令转入子程序; 4)相应子程序执行完后,可按规定取得输出参数。 注意:第二步和第四步并不是每个功能的调用都需要的;若需要输入参数时,第一步和第二步顺序可换。 从键盘输入一个字符: 1号功能调用:无输入参数 格式:MOV AH,1 INT 21H 功能:执行1号系统功能调用时,系统等待键盘输入,一旦有键按下,系统先检查是否是Ctrl-Break键,如果是则退出,否则将键入的字符的ASCII码值存入AL寄存器中,并在屏幕上显示该字符。 7号功能调用 功能:执行7号系统功能调用时,系统等待键盘输入,一旦有键按下,将键入的字符的ASCII码值存入AL寄存器中。 8号功能调用 功能与1号功能调用类似,检查Ctrl-Break键,但不回显。 从键盘输入一个字符串:0AH号功能 功能:是将键盘输入的字符串写入指定内存缓冲区中。因此必须事先定义一个输入缓冲区:第一个单元存放能输入字符串的最大长度(不能为零);第二个单元保留,以用作填写实际输入的字符个数,从第三个单元开始存放从键盘输入的字符串(以回车键表示字符串的结束)。 调用前,要求DS:DX指向输入缓冲区。 例:用0AH号功能输入字符串,要求把实际输入字符个数送入CX寄存器,并把指针(DS:DX)指令字符串的第一个字符。 DATA SEGMENT BUFFER DB 50 ;缓冲区长度 DB ? ;由0AH号功能填入实际字符个数 DB 50 DUP (?);定义50个字节空间 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA KEY_IN PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA DX,BUFFER ;确定缓冲区起始地址 MOV AH,0AH INT 21H ;调用0AH号功能 MOV CH,0 MOV CL,BUFFER+1 ;输入字符的实际个 ;数存入CX INC DX INC DX ;指针指向字符串的第一个字符 RET KEY_IN ENDP CODE ENDS END KEY_IN 在显示器上显示一个字符:2号功能调用 功能:将存于DL寄存器中的字符在屏幕上显示出来。例如:当执行完下面程序段后,就在屏幕上显示一个字母“A”。 MOV DL,‘A’ MOV AH,2 INT 21H 在显示器上显示一个字符串:9号功能调用 功能:将指定内存缓冲区中的字符串(必须以“$”字符作为结束符)在屏幕上显示出来。调用时,要求(DS:DX)指向显示缓冲区的首地址。 LEA DX,BUFFER MOV AH,9 INT 21H 例: 两个数值长度(所占字节数)不一样的压缩型BCD码的加法程序。比如说一个数占五个字节,另一个数占3个字节。 ADD_DATA SEGMENT FIRST DB 11H,22H,33H NUM1 DW $-FIRST SECOND DB 99H,88H,77H,66H,55H NUM2 DW $-SECOND ADD_DATA ENDS MOV CX,NUM1 CLC MOV SI,0 LOOP1: MOV AL,DS:[BP][SI] ADC AL, [BX][SI] DAA MOV [BX][SI],AL INC SI LOOP LOOP1 MOV CX,NUM2 LOOP2: JNB DONE MOV AL,0 ADC AL, [BX][SI] DAA MOV [BX][SI],AL INC SI LOOP LOOP2 DONE: MOV AH, 4CH INT 21H MULT1 ENDS END START MULT1 SEGMENT ASSUME CS:MULT1,DS:ADD_DATA START: MOV AX,ADD_DATA MOV DS,AX LEA BX,SECOND LEA BP, FIRST MOV AX, NUM2 CMP AX, NUM1 JAE NUM2_BIGGER XCHG AX,NUM1 XCHG AX,NUM2 XCHG BX,BP NUM2_BIGGER: MO
文档评论(0)