微机原理第4章25.ppt_第1页
微机原理第4章25.ppt_第2页
微机原理第4章25.ppt_第3页
微机原理第4章25.ppt_第4页
微机原理第4章25.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,4.2.5 过程定义伪指令,格式: PROC 类型 RET ENDP 过程就是子程序。一个过程可以被其它程序所调用(用CALL指令),或用JMP指令跳转到该处执行。,2,过程名:过程入口的符号地址,过程名必须相同。过程体内至少要有一条返回指令(RET)。 近过程:NEAR (默认类型),可省略,表示段内调用。 远过程:FAR,不可省略,表示段间调用。 调用一个过程的格式为:CALL 过程可嵌套、递归。,3,例如,MAIN PROC FAR RET MAIN ENDP,NAME1 PROC FAR CALL NAME2 RET NAME2 PROC RET NAME2 ENDP NAME1

2、ENDP,4,4.2.6 宏命令伪指令,如果需要多次使用同一个程序段,可以将这个程序段定义为一个宏命令,然后在需要时,可简单地用宏命令名来代替这个程序段。,指令的格式为: 宏命令名 MACRO 形参表 ENDM,5,注意:,宏定义结束符前不加宏命令名 形参可为任意个,之间用逗号隔开。 宏命令调用格式:宏命令名 实参 用实参顺序代替形参,若实参多于形参,则多余的实参被忽略。,6,例如:宏定义为: Display MACRO something LEA DX,something MOV AH,9 INT 21H ENDM 程序中宏调用: DISPLAY ERROR_MESSAGE DISPLAY

3、EXIT_MESSAGE ,宏展开:汇编程序会把宏调用按宏定义展开。,7,汇编后的结果: LEA DX,ERROR_MESSAGE MOV AH,9 INT 21H LEA DX,EXIT_MESSAGE MOV AH,9 INT 21H ,8,例:两个数之和的宏定义和宏调用。 宏定义为: DADD MACRO X,Y,Z MOV AX,X ADD AX,Y MOV Z,AX ENDM,X、Y、Z是形式参数。调用宏DADD时可写为: DADD DATA1,DATA2,SUM DATA1,DATA2,SUM是实际参数,由它们替换定义中的X、Y、Z。,9,参数可以是1个,2个或多个,SHIFT M

4、ACRO CN,R MOV CL,CN SHL R,CL ENDM 调用:SHIFT 4,AX SHIFT 6,BL 执行操作: 将AX逻辑左移4次 将BL逻辑左移6次,10,形参不仅可以出现在操作码,还可以是操作码的一部分, SHIFT MACRO X,Y,Z MOV CL,X S等待键入字符 INT 21H;结果在AL中 CMP AL,Y ;是Y? JZ YES ;是,转YES CMP AL,N ;是N? JZ NO ;是,转NO JMP GET_KEY;否则继续等待输入 YES: NO: ,21,7号、8号功能调用与1号类似,但输入的字符不显示在屏幕上。,22,格式:MOV AH, 0A

5、H LEA DX, INT 21H 执行操作:从键盘输入一串字符,并把它存入用户指定的缓冲区中。 要求:用户指定键入缓冲区存放输入的字符串,具体方法为在内存中开辟空间,用DS定义。 在调用本功能前,应把键入缓冲区的起始偏移地址预置入DX中。,(2) 键盘输入字符串(功能号0AH),23,键入缓冲区设定格式,用户定义的字符串的键入缓冲区格式 N1: 缓冲区长度(最大键入字符数) N2: 实际键入的字符数(不包括回车符) 从第三个字节开始存放键入的字符。,24,例:设在数据段定义键入缓冲区如下: STR1 DB 10,?,10 DUP(?) 调用DOS功能的0AH号功能的程序段为: MOV AH,

6、0AH LEA DX,STR1 INT 21H,25,2. DOS显示功能调用,(1) 在显示器上显示单个字符(功能号02H) 格式: MOV AH, 02H MOV DL, INT 21H 例:在显示器上显示一个字符A MOV AH,02H MOV DL,A ;或41H INT 21H,26,(2)打印输出字符,功能号:05H 功能:将DL中的内容输出到打印机上 例: MOV DL, 39H MOV AH,05H INT 21H,27,格式:MOV AH,09H LEA DX, INT 21H 要求: 被显示的字符串必须以$为结束符。 若要回车或换行,则应在字符串结束前加0DH(回车)或0A

7、H(换行) 被显示的字符串必须在数据段中定义,首单元的偏移地址送给DX。,(3)显示字符串(功能号09H),28,字符串输出显示例题,DATA SEGMENT MESS1 DB Input String:,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START:MOV AX,DATA MOV DS,AX,MOVAH,09 MOV DX,OFFSET MESS1 INT21H MOV AH,4CH INT 21H CODE ENDS END START,29,5. 退回DOS(功能号4CH),一个实际运行的用户程序执行完后,应该返回DOS提示

8、符的状态,用HLT指令无法将控制权交还给DOS。 格式: MOV AH, 4CH INT 21H,30,例4-10,从键盘上输入字符串“HELLO”,并在串尾加结束标志“$”。 DATASEGMENT STRINGDB 10,?,10 DUP(?) DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRING MOV AH,0AH INT 21H ;字符串输入,31,MOV CL,STRING+1 ;实际读入的字符个数送CL XOR CH,CH ADD DX,CX ;得到

9、字符串尾地址 MOV BX,DX MOV BYTE PTRBX+2,$ ;插入串结束符 MOV AH,4CH INT 21H ;返回DOS CODE ENDS END START,32,【例4-11】在屏幕上依次显示“1”,“2”,“3”,“A”,“B”,“C” 6个字符。,DATA SEGMENT STRINGDB 123ABC DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START:MOV AX,DATA MOV DS,AX LEA BX, STRING MOV CX,6 LPP:MOV AH,2 MOV DL,BX INT 21H ;显示

10、单字符,INC BX DEC CX JNZ LPP MOV AH,4CH INT 21H CODE ENDS END START,33,【例4-12】在屏幕上显示欢迎字符串“Hello,World!”,DATA SEGMENT STRING DB Hello,World!,0DH,0AH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX,34,MOV DX,OFFSET STRING MOV AH,09H INT 21H MOV AH,4CH INT 21H ;返回DOS CODE ENDS

11、END START,35,例题,在“whats your name?”提示下,从键盘输入名字,换行,并在屏幕上显示。,36,DATA SEGMENT BUF DB 60,?,60 DUP(?) MES DB whats your name?$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES MOV AH,09H INT 21H ;字符串显示,37,LEA DX,BUF MOV AH,0AH INT 21H ;输入名字 MOV DL,0AH MOV AH,02H INT 21H ;换行 LEA DX, BUF+2 MOV AH,09H INT 21H ;显示名字 MOV AH,4CH INT 21H ;返回DOS CODE ENDS END START,38,课堂练习,1、图示以下数据段在存储器中的存放形式 DATA SEGMENT A DB 1,2,3,4 B DB ABCD C DW 4 DUP(1) N EQU 12 X DD 33H,02H Y DD 0ABCDH DATA ENDS,39,2、图示以下数据段在存储器中的存放形式 DATA SEGMENT A DB 10,20,30,40 B DB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论