预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共26页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

4.2.4过程定义伪指令PROC、ENDP过程的类型有两种: NEAR——(默认类型)表示段内调用 FAR——表示段间调用 调用一个过程的格式为: CALL<过程名>4.2.5宏定义伪指令4.2.6汇编结束伪指令END4.3DOS系统功能调用介绍INT2lH功能大致可以分为四个方面: 设备管理、目录管理、文件管理和其它关于数据输入和输出我们这里只讨论键盘输入和显示输出,调用系统功能需要提供入口参数及所调用的功能号,调用结束返回结果。例:程序中有时需要用户对提示做出应答。 GET_KEY:MOVAH,1 ;等待键入字符 INT21H ;结果在AL中 CMPAL,’Y’ ;是’Y’? JZYES ;是,转YES CMPAL,’N’ ;是’N’? JZNO ;是,转NO JMPGET_KEY ;否则继续等待输入 YES: … … NO: …(2)输入字符串(功能号=0AH) 此功能调用从键盘输入一串字符并把它存入用户指定的缓冲区中。 MOVAH,0AH LEADX,<字符串缓冲区首地址> INT21H若用户键入的字符数(包括回车)≥定义的N1,本功能调用将不再接收新的键入,且光标不再向右移动。 例:设在数据段定义键盘缓冲区如下: STR1DB10,?,10DUP(?) 调用DOS功能的0AH号功能的程序段为: LEADX,STR1 MOVAH,0AH INT21H 此程序段最多从键盘接收10个按键(包括回车)。2.DOS显示功能调用MOVAH,9 LEADX,<字符串> INT21H 注意:被显示的字符串必须以’$’结束。例:在屏幕上显示:’HELLO,WORLD!’ ;在数据段定义字符串: DATASEGMENT STR1DB‘HELLO,WORLD!$’ DATAENDS ;在代码段中进行显示输出 MOVAH,9 LEADX,STR1 INT21H 完整的程序:HELLO.ASM附:BIOS功能调用4.4汇编语言程序设计基础(1)用方框表示工作框,框中用简明语言标明要完成的功能(4)各框之间用直线连起来表示程序走向。汇编语言上机过程4.4.2顺序程序STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT XL DW? XH DW? YL DW? YH DW? ZL DW? ZH DW? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX ;数据段的段基址装入DS MOV AX,XL ;X低位送AX ADD AX,YL ;X低位加Y低位 MOV ZL,AX ;存低位和 MOV AX,XH ;X高位送AX ADC AX,YH ;X高位加Y高位 MOV ZH,AX MOV AH,4CH;返回DOS INT 21H CODE ENDS END START例17:用查表的方法将一位十六进制数转换成相应的ASCII码。 既然指定用查表的方法,那么首先要建立一个表TABLE,在表中按照十六进制数从小到大的顺序放入他们对应的ASCII码值。编制的源程序如下: DATA SEGMENT TABLE DB 30H,31H,32H,33H,34H, DB 35H,36H,37H38H,39H,41H DB 42H,43H,44H,45H,46H HEX DB 4;一位十六进制数 ASCI DB ?;结果ASCII DATA ENDSSTACK SEGMENT PARA STACK DW 64CUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK BEING: MOV AX,DATA MOV DS,AX …………………………. 余下的请参照课本标号:程序结构: TEST/CMP指令 Jx标号1 处理体P1 JMP标号2 标号1: 处理体P2 标号2:其他指令 …标号1: