欢迎来到天天文库
浏览记录
ID:34035992
大小:537.66 KB
页数:55页
时间:2019-03-03
《04x86汇编语言程序设计(2)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、微机原理(计算机原理)第4讲X86汇编语言程序设计(2)1第4讲X86汇编语言程序设计(2)X86汇编语言程序设计基础数据传送算术运算清华大学电子工程系,马洪兵,2008年秋2X86汇编语言程序设计基础汇编语言是一种用助记符号来表示指令的程序设计语言,用助记符号表示的指令称为符号指令符号指令必须翻译成机器语言二进制指令才能在计算机上执行,实现这种翻译的程序称为汇编器(assembler)汇编语言程序中的符号指令语句与机器指令是一一对应的,故汇编语言能够利用计算机所有硬件特性并能够直接控制硬件对汇编语言的熟练掌握,有助于加深对计算机体系结构和计算机工作原理的深入理解清华大学
2、电子工程系,马洪兵,2008年秋3X86汇编语言程序设计基础汇编语言程序包括两类语句:指令语句伪指令语句指令语句即用助记符表示的指令,它与一条二进制机器指令对应伪指令语句不与机器指令相对应,从而不像指令语句那样在程序运行期间由计算机来执行,而是由汇编器在对源程序进行汇编时进行处理,完成定义数据、指示程序结束等功能清华大学电子工程系,马洪兵,2008年秋4X86汇编语言程序设计基础符号指令的格式[标号:]操作码助记符操作数助记符[;注释]标号代表该指令在存储器中的地址,为分支、循环提供转移目标(可选)操作码助记符如ADD,MOV等,指出指令要实现的功能操作数是指令操作的对象
3、。当一条指令需要一个以上的操作数时,操作数间用逗号分隔,逗号前为目标操作数,逗号后为源操作数注释可增强程序的可读性(可选)清华大学电子工程系,马洪兵,2008年秋5X86汇编语言程序设计基础伪指令的格式[名字]伪操作命令操作数[;注释]名字是可选的,与指令语句中的标号一样代表一个符号地址,但是没有冒号伪操作命令指出伪指令的功能清华大学电子工程系,马洪兵,2008年秋6X86汇编语言程序设计基础汇编语言源程序的结构——完整的段定义DATASEGMENT定义数据…...DATAENDSSTACKSEGMENTSTACK定义堆栈…...STACKENDSCODESEGMENTA
4、SSUMEDS:DATA,SS:STACK,CS:CODE定义代码START:……CODEENDSENDSTART清华大学电子工程系,马洪兵,2008年秋7X86汇编语言程序设计基础段定义伪指令段名SEGMENT段体段名ENDS大多数程序定义三个段通常用DATA作为数据段的段名,CODE作为代码段的段名,STACK作为堆栈的段名,以增强程序的可读性清华大学电子工程系,马洪兵,2008年秋8X86汇编语言程序设计基础段约定伪指令ASSUME段寄存器:段名,…,段寄存器:段名通知汇编器,使用哪个段寄存器寻址各个逻辑段,ASSUME语句通常作为代码段的第一条语句ASSUME是伪
5、指令,段寄存器实际地址值必须通过指令语句装入ASSUMECS:CODE,DS:DATA,SS:STACK……MOVAX,DATAMOVDS,AX代码段寄存器的值由程序加载时由操作系统自动设置清华大学电子工程系,马洪兵,2008年秋9X86汇编语言程序设计基础程序结束伪指令END表达表达式为程序的第一条指令的地址,即程序的入口地址清华大学电子工程系,马洪兵,2008年秋10X86汇编语言程序设计基础DATASEGMENTMESSAGEDB"Helloworld!",0DH,0AH,"$"DATAENDSSTACKSEGMENTSTACKDB100DUP(?)STACKEND
6、SCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMESSAGEMOVAH,9Helloworld!INT21HMOVAH,4CHINT21HCODEENDS清华大学电子工程系,马洪兵,ENDSTART2008年秋11X86汇编语言程序设计基础变量定义伪指令定义变量,为变量分配存储单元,由DB/DW/DD/DQ/DT定义DB——DefineByte,定义字节数据DW——DefineWord,定义字数据DD——DefineDoubleword,定义双字数据DQ——Def
7、ineQuadword,为定义的数据分配8个字节存储单元DT——DefineTenbytes,为定义的数据分配10个字节存储单元清华大学电子工程系,马洪兵,2008年秋12X86汇编语言程序设计基础变量定义伪指令格式[变量名]变量定义伪指令初值表变量名为用户自定义标志符,表示初值表首元素的逻辑地址,即用这个符号表示地址,称为符号地址。变量名是可选的,若无变量名,则汇编器直接为初值表分配空间,变量无符号地址初值表是用逗号分隔的参数,由数值常数、表达式、?或DUP组成。其中?表示未赋初值,DUP用于定义重复的参数清华大学电子工程系
此文档下载收益归作者所有