- 1、本文档共99页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南邮微机原理第6章课件
6.1 汇编源程序的编程格式
6.2 系统功能调用
6.3 程序设计举例
6.4 Windows 汇编语言编程初步 ;汇编源程序有两种编程格式:
EXE文件的编程格式:只能生成扩展为EXE
的可执行文件;
COM文件的编程格式:可以生成扩展为COM
的可执行文件。
COM文件的执行级别高于EXE文件,同名的BAT(批处理)文件执行级别最低。;EXE文件的编程格式; .486
DATA SEGMENT USE16 ;定义数据段
MESG DB ‘I AM A STUDENT!’,’$’
DATA ENDS
CODE SEGMENT USE16 ;定义代码段
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
LAST: MOV AH,9
MOV DX,OFFSET MESG
INT 21H
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS
END BEG;EXE文件的内存映象;;COM文件的编程格式; .486
CODE SEGMENT USE16
ASSUME CS:CODE
ORG 100H
BEG: JMP START
MESG DB ‘HELLO’,0DH,0AH,’$’ ;用户程序数据区
START: MOV CX,10 ;设置循环次数
LAST: MOV AH,9
MOV DX,OFFSET MESG
INT 21H ;显示一行HELLO
LOOP LAST ;循环计数
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS
END BEG ;COM文件的内存映象;;返回DOS的其它方法
EXE格式文件可以借用PSP首单元的 INT 20H 返回DOS
执行完用户程序后,使CS:IP指向PSP的首单元。
DOS在装载EXE文件时将DS指向该单元,故可采取措施:
把执行程序放在一个远过程中;
用户程序在给SS、SP赋初值后,DS赋值前,用三条指令把PSP的首单元的物理地址(DS:0000H)压入堆栈,即:
PUSH DS
MOV AX,0
PUSH AX
返回DOS时,执行RET指令,栈顶四个字节弹出分别送CS和IP,即可执行INT 20H指令。
COM格式文件可直接执行INT 20H 指令; .486 ;方式定义
DATA SEGMENT USE16 ;定义数据段
MESG DB ‘HELLO’,0DH,0AH,’$’
DATA ENDS
CODE SEGMENT USE16 ;定义代码段
ASSUME CS:CODE,DS:DATA,SS:STACK ;说明段约定
MAIN PROC FAR ;为什么定义成远过程?
BEG: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LAST: MOV
文档评论(0)