文档详情

9讲:程序举例、DOS功能调用.ppt

发布:2017-06-17约5.55千字共27页下载文档
文本预览下载声明
第九讲 程序举例、DOS功能调用 三、循环结构 1.初始化 2.处理部分 3.控制部分 4.结束部分. 例:100个字节数据从3000H:0100H送到3000H:0200H单元. 程序框图见下图3-6所示. 1 (a)不允许0次循环 (b)允许0次循环 ;circle1.asm cycular program structure (a) ;unclude 0 cycle mov ax, 3000h mov ds, ax mov si, 0100h mov di, 0200h mov cx, 100 11: mov al, [si] mov [di], al add si , 1 add di, 1 loop 11 int 20h ;circle asm cycular program structure(b) ;include 0 cycle mov ax, 3000h mov ds, ax mov si, 0100h mov di, 0200h mov cx, 100 inc cx 11: dec cx jz 12 mov al, [si] mov [di], al inc si inc di jmp 11 12: int 20h 例:延时100ms程序 MOV BL,10 DELAY:MOV CX,2801 WAIT:LOOP WAIT ; 10mS DEC BL JNZ DELAY 延时时间=2801×T0×10 例:3-6 气泡排序法 典型程序,自阅 四、子程序结构 调用过程: 通用性:入口参数 出口参数 参数传递方法: 1.用REG,少量参数 2.用程序M传递 3.用堆栈M传递 (一) 用程序M传递参数 在主程序中,将参数放在 CALL后面.例: 主程序 … CALL ADDSUB NUM1 DD ;被加数 NUM2 DD 5678H ;加数 BUFFER DD ? ;和 返回地址 子程序: PUSH BP 若EA(NUM1)=IP0 MOV BP,SP … MOV BX ,[BP+2] MOV CX ,CS:[BX] MOV SI ,CS:[BX+2] … ADD BX ,12 ;IP0+12 MOV [BP+2] ,BX;返回地址入栈 … POP BP RET 若传送某变量的地址: 主程序: NUM1 DW OFFSET VAL1,SEG VAL1 子程序: LDS SI,DWORD PTR CS:[BX] ; DS:SI=VAL1 的物理地址 例3-7 64位二进制数相加,自阅。 (二)用堆栈传递参数 用于参数较多,且子程序有嵌套或递归调用。自阅。 (三)子程序的递归调用 子程序自身调用。自阅。 3-6 操作系统资源的使用 两种资源: 1.与硬件相关的基本I/O系统(BIOS调用). 例: INT 16H ;键盘I/O 2.与硬件无关的基本I/O系统, 称DOS功能调用. 功能:对系统字符I/O,磁盘控制,文件管理等 进行功能调用. DOS功能调用格式: INT 21H 调用参数在AH中. 一、字符I/O的DOS功能调用 (一)显示单个字符—02号调用 格式: MOV DL,‘字符’ MOV AH,02H INT 21H 例:在CRT上连续显示0~9数字100遍后返回DOS。用延时实现显示间隔。 ;exam3-10 asm display 0-9 sta
显示全部
相似文档