【文档说明】IBM-PC汇编语言程序设计第四章汇编语言程序格式课件.ppt,共(20)页,166.501 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44724.html
以下为本文档部分文字说明:
4.1汇编程序功能4.2伪操作4.3汇编语言程序格式4.4汇编语言程序的上机过程第4章汇编语言程序格式把一个长度为8的字符串从源缓冲区转送到目的缓冲区中data1segmentsource_bufferdb‘personal’data1endsd
ata2segmentdest_bufferdb8dup(?)data2endscode1segmentassumecs:code1,ds:data1,es:data2start:movax,data1m
ovds,axmovax,data2moves,axleasi,source_bufferleadi,dest_buffercldmovcx,8repmovsbexit:movah,4chint21hcode1endsendstart1.汇编程序功能汇
编程序的主要功能:•检查源程序,给出出错信息。•产生目标文件(.obj)和列表文件(.lst)。•展开宏指令。2.程序运行步骤及生成的文件myfile.asm编辑程序汇编程序连接程序myfile.crfoth
erfiles.objmyfile.lstmyfile.objmyfile.mapmyfile.exe建立,运行汇编语言程序过程1、编写汇编源代码——asm文件2、用汇编程序(masm.exe)源代码汇编成目标代码——obj文件3、用连接程序(l
ink.exe)将目标程序连接成可执行程序——exe文件4、执行程序。上机过程:①C>MASMtest1.ASM②C>LINKtest1.OBJ③C>test1.exe3.伪操作(伪指令)伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存
储模式定义、数据定义、存储器分配、指示程序开始结束等功能。伪指令是命令汇编编译器执行某种操作的;指令是命令CPU执行某种操作的。(1)段定义伪操作:segment和ends段名SEGMENT…………;语句序列段名ENDS格式:例如:datasegment;定义数据段…
dataends;----------------------------------------extrasegment;定义附加段…extraends;--------------------------------
--------codesegment;定义代码段assumecs:code,ds:data,es:extrastart:movax,datamovds,ax;段地址段寄存器…codeendsendstart(2)明确段和段寄存器的
关系伪操作:assume格式:assume分配情况1,分配情况2,……分配情况1格式为:段寄存器名:段名说明:例如:END[标号](3)源程序结束伪操作:end格式:说明:end表示结束汇编,因此必须放在源程序末尾。
“标号”应指向程序起始地址,在主模块中必须指定,在子模块中可以不指定。例如:(4)数据定义及存储器分配伪操作:DB、DW[变量名]助记符操作数[,操作数,…]助记符:DBDWDATA_BYTEDB10,4,10H,?DATA_WORDDW100,100H,-5,?-0AH04H10H-64H
00H00H01HFBHFFH-DATA_BYTEDATA_WORD例4.7:ARRAYDB‘HELLO’DB‘AB’DW‘AB’48H45H4CH4CH4FH41H42H42H41HARRAYVARDB100DUP(?)DB2DUP(0,1,2,?)例4.8:
例4.10:OPER1DB?,?OPER2DW?,?……MOVOPER1,0;字节指令MOVOPER2,0;字指令OPER1DB1,2OPER2DW1234H,5678H……MOVAX,OPER1+1×MOVAL,OPER2×类型不匹配MOVA
X,WORDPTROPER1+1MOVAL,BYTEPTROPER2(AX)=3402H(AL)=34H(5)表达式赋值伪操作:equ和=表达式名EQU表达式ALPHAEQU9BETAEQUALPHA
+18BBEQU[BP+8]格式:例如:(6)地址计数器与对准伪操作:地址计数器$:保存当前的偏移地址例如:JNE$+6;转向地址是JNE的首址+6ARRAYDW1,2,$+4,3,4,$+400H01H00H02H00H7CH00H03H00H04H00H8
2HARRAY007E00780074例4.17:假设ARRAY单元的首偏移地址为0074H4.汇编语言程序格式标号指令寄存器说明程序或语句变量伪指令标号的功能宏指令变量常数表达式源程序的每条语句格式:[名字]操作操作数[;注释]标号/变量:段值、偏
移量、类型三种属性表达式:数字表达式地址表达式举例说明汇编源程序结构及格式•由若干各段组成,最少要有一个代码段。•代码段用来存放指令,其它段用来存放数据。•每条语句占一行,一行只能放一条语句,分号表示注释,一行内分号以后的内容为注释,不汇编。
•源程序以end伪指令结束汇编,因此end以后若有程序是没有意义的。•源程序以end后的标号地址为源程序起始地址。•源程序结束时应加上终止程序返回DOS语句,否则程序不能正常终止。例如(1)算术操作符:、、、、ModVIDEO_BUFDB25*80*2DUP(?)ARRAYDW1,2,3,
4,5,6,7ARYENDDW?MOVCX,(ARYEND-ARRAY)/2ADDAX,BLOCK+2;符号地址常数有意义;时意义不明确MOVAX,BX+1;MOVAX,[BX+1];寄存器间接寻址例4.18~19(2)数值回送操作符:O
FFSET、SEGOFFSET/SEG变量/标号功能:回送变量或标号的偏址/段址(3)属性操作符:PTR、段操作符、SHORT类型PTR表达式MOVWORDPTR[BX],5段操作符MOVES:[BX],ALSHORT标号JMPSHORTNEXT