- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2012级wj41
* 第4章 汇编语言程序设计 4.1 汇编语言源程序 汇编语言是用助记符、符号地址以及标号等符号书写的程序。 用汇编语言编写的程序叫源程序。 机器语言 — 用二进制数来表示指令和数据。 B0 64 什么意思?这就是机器语言。既不直观,又不易理解和记忆。 MOV AL,64H ;大家很清楚,这就是助记符。 助记符—反映指令的功能和主要特征,便于人们理解和记忆。 * code segment assume cs:code start: mov bx,0a9b6h mov ch,4 mov cl,4 p3: rol bx,cl mov dl,bl and dl,0fh cmp dl,09h jle p1 add dl,37h jmp short p2 p1: add dl,30h p2: mov ah,2 int 21h dec ch jnz p3 mov dl,H mov ah,2 int 21h mov ah,4ch int 21h code ends end start BB B6 A9 B5 04 B1 04 D3 C3 8A D3 80 E2 0F 80 FA 09 7E 05 80 C2 37 EB 03 。。。 CD 21 在计算机存储器中的保存形式 * 汇编源程序需翻译成机器语言,变成可执行文件,机器才能执行,这个翻译过程叫编译。 汇编语言 源程序 编译 目标程序 汇编程序 * 汇编语言是面向具体计算机硬件的语言,和机器密切相关。它最大缺点是可读性差,编程效率低。 高级语言—编程时不需要对机器指令系统有深入了解,稍加培训即可掌握。可读性强,功能强。 为什么要用汇编语言? 汇编语言编写的程序节省内存,执行速度快,并为用户直接控制对象提供了手段。故实时性要求很高的程序多采用汇编语言程序。 * 4.1.1 汇编语言源程序的结构 源程序通常由一个或几个程序模块组成,每个模块可包含若干个数据段、堆栈段和代码段。 DATA SEGMENT BLOCK DB 43H,0ABH,… PDATA DB 20 DUP(?) NDATA DB 20 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA EXP1 PROC FAR START: PUSH DS MOV AX,0 PUSH AX * MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,BLOCK LEA DI,PDATA LEA BX,NDATA CLD MOV CX,PDATA-BLOCK GOON: LODSB TEST AL,80H JNZ MINUS STOSB JMP AGAIN MINUS: XCHG BX,DI STOSB XCHG BX,DI AGAIN: LOOP GOON RET EXP1 ENDP CODE ENDS END START * 4.1.2 汇编语言语句类型及格式 ? 指令性语句,其格式为: 标号:指令助记符 操作数;注释 指令性语句是计算机可执行的,即有对应的机器码,而指示性语句不能执行,用来定义变量、分配存储单元、指示程序开始和结束等,不产生机器码。 ? 指示性语句,又叫伪指令,其格式为: 名字 伪指令 操作数 ;注释 * [标号:] 操作码 [操作数[,操作数]] [;注释] 每条语句最多由四部分组成: 名字、标号由英文字母、数字及专用字符组成, 长度不超过31个,且不能由数字打头,不能用保留字(如寄存器名,指令助记符,伪指令等)。 [名字] 伪操作 操作数[,操作数,,,] [;注释] 例如: MINUS: XCHG BX,DI ;交换数据 BLOCK DB 43H,0ABH,18H ;定义数据 操作数由寄存器、存储单元、数据项或其表达式构成。根据指令的要求,数目不等。 操作码是一个助记符,它可以是指令、伪指令(又叫伪操作)或宏指令,不可缺少。 名字是一个标号,根据需要而定,也可以没有。 注释:用分号“;”作为注释开始,可有可无。 * DATA SEGMENT BLOCK DB 43H,0ABH,… PDATA DB 20 DUP(?) NDAT
文档评论(0)