资源描述
,空军雷达学院 计算机教研室,1.用编辑程序(如EDIT)建立ASM源程序文件;,2.用汇编程序(MASM或ASM)把ASM文件汇编成OBJ文件;,3.用连接程序(LINK)把OBJ文件转换成EXE文件(可执行文件);,4.在DOS命令状态下直接键入文件名就可执行该文件。,第三节 汇编语言上机操作,汇编语言程序上机过程,编辑程序,EDIT,汇编程序,MASM,MBD.OBJ,连接程序,LINK,MBD.EXE,手写程序,MBD.ASM,MBD.ASM,1、在计算机上建立自己的汇编目录。,2、将EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE拷入自己的目录下。,建立上机的汇编环境,一般上机过程,1、在DOS下,执行EDIT.EXE文件,进入编辑界面。,2、按提供的源程序输入源程序。,EDIT的命令激活键为ALT键,命令的亮字符为快捷方式。源程序以自己命名的文件名以.ASM文件存于自己的汇编目录下。,3、检查MASM、LINK、和DEBUG程序的好坏。以CTRL-C或Q(DEBUG)退出。,会话方式,C MASM,Microsoft (R)Macro Assembler Version 5.00,Copyright (C)Microsoft Corp 1981-1985,1987,All rights reserved,Sourcefilename.ASM:A,Objectfilename A.OBJ:,Sourcelisting NUL.LET:,Cross-reference NUL.CRF:,51724+452724 Bytes symbol space free,0Warning Errors,0Severe Errors,4、汇编源程序。DOS下键入MASM XX;回车。,注:,XX为自己命名的要汇编的源程序名。.ASM后缀可以不加,分号不能少。,有错误,,看MASM提示的错误行号和错误性质。并用EDIT XX.ASM重新修改。,正确时,,产生同名的.OBJ文件(目标文件),一般上机过程,5连接目标程序。DOS下键入LINK XX;回车。,注:,XX为自己刚才得到的目标文件名。.OBJ后缀可以不加,分号不能少。,正确时,,产生同名的.EXE文件。,6对于无法在显示器上看到结果的程序,在DEBUG下执行程序并查看结果。,方法,:DOS下DEBUG 文件名.EXE 回车,,出现-DEBUG命令提示符。,一般上机过程,DEBUG下,-Nname.exe,-L 将name.exe文件从DOS调入DEBUG,-U,得到本程序的机器程序代码和反汇编指令,-R,查看执行程序前的寄存器现场和将要执行的指令,-T,单步执行一条指令,查看指令前后的现场变化,了解指令的功能,-D ds:0,可查看执行程序前后的存储器现场,-Q,退出DEBUG,算术运算符包括、*、/、MOD(取模),它们与整型常量相结合,构成算术表达式,其结果为整数。,4.4.1 算术运算符,ORG 100H,X DB?,Y DB?,MEM1 EQU X+5,MEM2 EQU$-5,CONST EQU Y-X,EXAMPLE:,;在偏移地址=100,H,处放,X,;变量,X,的偏移地址为100,H,;变量,Y,的偏移地址为101,H,;MEM1=100H+5=105H,;MEM2=102H-5=0FDH,;CONST=101H-100H=1,ORG 表达式,$位置计数器的现行值,第四节 汇编语句中的运算符,4.4.1 算术运算符,运算符,运算格式,运算功能,+,+,表达式,正数(单项运算符),-,-,表达式,负数(单项运算符),+,表达式1+表达式2,加法,-,表达式1-表达式2,减法,*,表达式1*表达式2,乘法,/,表达式1/表达式2,除法(取商),MOD,表达式1 MOD表达式2,模除(取余数),SHR,表达式1 SHR次数,右移,SHL,表达式1 SHL次数,左移,逻辑运算符是对其操作数进行二进制位的逻辑运算,该操作数必须是整数,不能是存储器地址。,逻辑运算符有NOT(逻辑非)、AND(逻辑与)、OR(逻辑或)、XOR(逻辑异或)。,这里所述的逻辑运算与逻辑运算指令不同,逻辑运算指令是在执行程序时完成逻辑运算的,而汇编逻辑运算是在源程序汇编时完成的。,4.4.2 逻辑运算符,运算符,运算格式,运算功能,NOT,NOT表达式,逻辑非,AND,表达式1AND表达式2,逻辑与,OR,表达式1OR表达式2,逻辑或,XOR,表达式1XOR表达式2,逻辑异或,4.4.2 逻辑运算符,4.4.2 逻辑运算符,MOV AX,NOT 0F0H,MOV AL,55H XOR 0F0H,AND AL,55H AND 0F0H,;将0FF0FHAX,;将0A5HAL,;AL的内容(0A5H)与表达式55H AND 0F0H的结果(50H)进行“与”运算,其结果(00H)AL,EXAMPLE:,关系运算符对两个操作数进行比较操作,若关系成立则返回真值“-1”,即0FFFFH,否则返回假值“0”。,关系运算符有EQ(相等)、NE(不相等)、LT(小于)、LE(小于等于)、GT(大于)、GE(大于等于)。,4.4.3 关系运算符,EXAMPLE:,COUNT EQU 32,MOV AX,COUNT LT 50,MOV AX,COUNT LT 20,MOV AX,4 EQ 3;0 AX,MOV AX,4 NE 3;-1 AX,;变量COUNT=32,被汇编为MOV AX,0,表示第二个操作数值为假,被汇编为MOV AX,0FFFFH,表示第二个操作数值为真。,4.4.3 关系运算符,运算符,运算格式,运算功能,EQ,表达式1 EQ 表达式2,两个表达式相等为真,NE,表达式1 NE 表达式2,两个表达式不相等为真,LT,表达式1 LT 表达式2,表达式1表达式2为真,LE,表达式1 LE 表达式2,表达式1表达式2为真,GT,表达式1 GT 表达式2,表达式1表达式2为真,GE,表达式1 GE 表达式2,表达式1表达式2为真,数值返回运算符用于回送其操作数在程序中的信息,如段值、偏移值等。,4.4.4 数值返回运算符,运算符,运算格式,运算功能,SEG,SEG 变量或标号,回送变量或标号的段地址,OFFSET,OFFSET 变量或标号,回送变量或标号的偏移地址,LENGTH,LENGTH 变量,回送变量中的元素个数(外层DUP的次数),无DUP为1,TYPE,TYPE 变量或标号,回送变量或标号数据类型值对变量则回送变量一个元素所占字节数.若是标号,则对NEAR型,回送-1(FFFFH),FAR型回送-2,SIZE,SIZE 变量,回送变量所占的字节总数,即LENGTH与TYPE的乘积,4.4.4 数值返回运算符,EXAMPLE:,X DB?,AGIN:MOV AX,SEG X,MOV BX,OFFSET X,MOV DX,SEG AGIN,MOV SI,OFFSET AGIN,MOV CH,LENGTH X ;1,CH,MOV CL,SIZE X ;1,CL,;定义变量X为一个字节,;取变量X的段地址AX,;取变量X的偏移地址BX,;取标号AGIN的段地址DX,;取标号AGIN的偏移地址SI,属性运算符用来指定或修改相应操作数的类型。,4.4.5 属性运算符,运算符,运算格式,运算功能,PTR,类型 PTR 表达式,重新设置表达式的类型,:,段前缀:表达式,强制汇编程序按段前缀指定的段来计算变量或标号的偏移地址,THIS,THIS 类型,指定一个名字的类型,和EQU一起使用,PTR 操作符允许对已定义了的变量或标号以不同类型进行存取。,DATA1 SEGMENT,BUF DW 100 DUP (?),VALUE EQU 0ABCDH,X_BYTE EQU THIS BYTE,X_WORD DW 3412H,.,DATA1 ENDS,CODE1 SEGMENT CODE,.,MOV BX,BUF ;从字变量BUF中取一个字BX,MOV AL,BYTE PTR BUF ;从字变量BUF中取一个字节AL,MOV SI,OFFSET BUF ;BUF的偏移地址SI,MOV AH,BYTE PTR SI+2 ;从字存储器中取一个字节AH,JMP FAR PTR NEXT ;转到另一代码段中标号NEXT处,.,CODE1 ENDS,CODE2 SEGMENT,NEXT:MOV AH,HIGH VALUE,MOV AL,LOW VALUE,.,CODE2 ENDS,4.4.5 属性运算符,4.4.6 字分离运算符,运算符HIGH和LOW是分离运算对象的高字节和低字节部分。这两种运算符的使用格式是:,HIGH 表达式,LOW 表达式,表达式必须,具有常量值,HIGH和LOW运算符不能对存储器操作数或寄存器内容进行分离,4.4.6 字分离运算符,运算符,运算格式,运算功能,HIGH,HIGH 表达式,取一个16位常数表达式的高位字节/低位字节,LOW,LOW 表达式,取一个16位常数表达式的低位字节/低位字,对字常数进行分离,优先级别,运算符,(最高)1,LENGTH,SIZE,2,PTR,OFFSET,SEG,TYPE,THIS,3,HIGH,LOW,4,+,-(单项运算符),5,*,/,MOD,SHR,SHL,6,+,-,7,EQ,NE,LT,LE,GT,GE,8,NOT,9,AND,(最低)10,OR,XOR,4.4.7 运算符的优先级,
展开阅读全文