第三节汇编语言程序举例 例一、数据传送程序 例二、查找关键字 ▲掌握DOS的装入和返回功能
第三节 汇编语言程序举例 例一、数据传送程序 例二、查找关键字 ▲ 掌握DOS的装入和返回功能
▲复习DOS系统的启动过程 磁盘 执行用户程序后, 引导程序 IO. SYS 若要返回DOS状态 内存 DOS MSDOS. SYS 即在屏幕上出现DOS提示符,「IKB中断向量表 COMMAND. COM 等待输入新的命令 2)引导程序 EDITEXE MASMEXE 其他 应在用户程序的最后安排 IO. SYS模块 LINK.EXE 系统 MSDOS. SYS模块 DEBUG.exe 程序 完成此功能的程序段。 3) COMMAND. COM RAM 4)程序 空间 hello. asm 通常采用调用 hello. obj DOS系统功能完成。 hello. exe ROM BIOS 应用程序 ROM 1)F:000.统检测程序
▲复习DOS系统的启动过程 执行用户程序后, 若要返回 DOS状态, 即在屏幕上出现 DOS提示符, 等待输入新的命令, 应在用户程序的最后安排 完成此功能的程序段。 FFFF:0000H 1 2 4 3 ? ROM 系统检测程序 IO.SYS 模块 COMMAND.COM MSDOS.SYS 模块 用户程序 空 间 引导程序 1KB 中断向量表 RAM 内 存 ROM BIOS DOS IO.SYS COMMAND.COM MSDOS.SYS 引导程序 磁 盘 EDIT.EXE MASM.EXE LINK.EXE DEBUG.exe 应 用 程 序 其他 系统 程序 hello.asm hello.obj hello.exe 通常采用调用 DOS 系统功能完成
调用DOS系统的4CH功能,返回DOS 方法:在要返回DOS处,安排指令: MOV AH. 4CH INT 21H 执行完4CH的功能调用,即返回DOS。 例 code SEgment ASSUME CS: code start:、 程序主体部分 MOV AH,4CH;返回DOS NT 21H code ENDs END start
调用DOS系统的4CH 功能, 返回DOS 方法: 在要返回DOS 处,安排指令: MOV AH, 4CH INT 21H 执行完4CH的功能调用,即返回DOS 。 例 code SEGMENT ASSUME CS: code start: 、、、 ;程序主体部分 、、、 、、、 MOV AH, 4CH ;返回DOS INT 21H code ENDS END start
例一编写完整汇编语言程序,完成内存数据块传送功能。 将某段中的字符串Helo!传送到另一段中 匚开始 建立传送方向 DS:SI←源串首地址 ES:DI←目的串首地址 CX←串长度 串传送 返回DOS
例一 编写完整汇编语言程序,完成内存数据块传送功能。 将某段中的字符串“Hello!”传送到另一段中。 开始 建立传送方向 DS: SI ← 源串首地址 ES: DI ←目的串首地址 CX ← 串长度 串传送 返回 DOS
a SEGMENT ;数据段1 XX DB Hello! ;定义源串 aa ENDS bb SEGMENT ;数据段2 DB 6 dup(?) ;定义目的缓冲区 bb ENDS SEGMENT ;代码段 ASSUME CS:c,DS:aa,ES:bb;指示指令中标号变量所在段 start: CLD ;设置传送方向 MOV AX. aa ;DS:SI←源串首地址 MOV DS. AX LEA SI,XX MOV AX, SEG yy ;ES:DI←目的首地址 MOV ES. AX MOV DI, OFFSETyY MOV CX. 6 ;CX←串的长度 REP MOVSB ;串传送 MOV AH, 4CH ;调用4CH系统功能返回DOS INT 21H ENDS END start ;指示程序结束和程序入口
aa SEGMENT ; 数据段1 xx DB 'Hello!’ ; 定义源串 aa ENDS bb SEGMENT ;数据段2 yy DB 6 dup (?) ; 定义目的缓冲区 bb ENDS cc SEGMENT ;代码段 ASSUME CS:cc, DS:aa, ES:bb ;指示指令中标号,变量所在段 start : CLD ;设置传送方向 MOV AX , aa ;DS: SI ← 源串首地址 MOV DS , AX LEA SI , xx MOV AX , SEG yy ;ES:DI ← 目的首地址 MOV ES , AX MOV DI , OFFSET yy MOV CX , 6 ;CX ← 串的长度 REP MOVSB ;串传送 MOV AH , 4CH ;调用4CH系统功能,返回DOS INT 21H cc ENDS END start ;指示程序结束和程序入口