中科院自动化所考研之中科大微机原理课件42-4364

上传人:仙*** 文档编号:240913599 上传时间:2024-05-17 格式:PPT 页数:64 大小:297KB
返回 下载 相关 举报
中科院自动化所考研之中科大微机原理课件42-4364_第1页
第1页 / 共64页
中科院自动化所考研之中科大微机原理课件42-4364_第2页
第2页 / 共64页
中科院自动化所考研之中科大微机原理课件42-4364_第3页
第3页 / 共64页
点击查看更多>>
资源描述
第四章第四章 汇编语言程序设计汇编语言程序设计4.1程序格式和表达式程序格式和表达式n程序格式程序格式qMASM中的语句分为指令性语句和伪指令语句中的语句分为指令性语句和伪指令语句q指令性语句与机器指令相对应,汇编程序将它们翻译成指令性语句与机器指令相对应,汇编程序将它们翻译成目标代码。语句格式为:目标代码。语句格式为:n标号标号:指令助记符指令助记符 操作数,操作数操作数,操作数 ;注释注释q伪指令语句没有对应的机器指令,可完成数据定义,存伪指令语句没有对应的机器指令,可完成数据定义,存储区分配,段定义,段分配,指示程序结束等功能。储区分配,段定义,段分配,指示程序结束等功能。n名字名字 伪指令指示符伪指令指示符 操作数,操作数操作数,操作数 ;注释注释q汇编语言中常数,变量和标号是三种基本数据项汇编语言中常数,变量和标号是三种基本数据项4.1程序格式和表达式程序格式和表达式nMASM中的表达式中的表达式q算术运算符算术运算符q逻辑运算符逻辑运算符q关系运算符关系运算符q数值返回数值返回q修改属性修改属性q其他运算符其他运算符q运算符优先级运算符优先级算术运算符算术运算符符号符号名称名称运算结果运算结果加法加法和和减法减法差差*乘法乘法积积/除法除法商商MOD模除模除余数余数SHL左移左移左移后的二进制数左移后的二进制数SHR右移右移右移后的二进制数右移后的二进制数n例:例:qARRAY DB 1,2,3,4,5TRY DB 20 MOV AX,30*5 MOV CX,(TRY ARRAY)qDA EQU 300 MOV CX,DA/100逻辑运算符逻辑运算符符号符号名称名称运算结果运算结果AND与运算与运算逻辑与结果逻辑与结果OR或运算或运算逻辑或结果逻辑或结果XOR异或运算异或运算逻辑异或结果逻辑异或结果NOT非运算非运算逻辑非结果逻辑非结果n例:例:qMOV AL,NOT OFFHqMOV BL,8CH AND 73HqMOV AH,8CH OR 73HqMOV CH,8CH XOR 73H关系运算符关系运算符符号符号名称名称运算结果为真输出全运算结果为真输出全1,为假输出全,为假输出全0EQ相等相等NE不等不等LT小于小于LE小于等于小于等于GT大于大于GE大于等于大于等于n例:例:qMOV AX,10H GT 16qADD BL,6 EQ 0110BqMOV CX,(PORT LT 5)AND 100)OR(PORT GE 5)AND 200)数值返回数值返回符号符号名称名称运算结果运算结果OFFSET返回偏移地址返回偏移地址偏移地址偏移地址SEG返回段地址返回段地址段地址段地址TYPE返回元素字节数返回元素字节数字节数字节数LENGTH返回变量单元数返回变量单元数单元数单元数SIZE返回变量总字节数返回变量总字节数 总字节数总字节数n例:例:qMOV BX,OFFSET DA1qMOV AX,SEG M1MOV DS,AXqA1 DB 20H,30HMOV AH,TYPE A1MOV CX,LENGTH A1MOV BL,SIZE A1修改属性修改属性符号符号名称名称运算结果运算结果段寄存器名段寄存器名段前缀段前缀修改段修改段PTR修改类型属性修改类型属性修改后类型修改后类型THIS指定类型指定类型/距离属性距离属性 指定后类型指定后类型HIGH分离高字节分离高字节高字节高字节LOW分离低字节分离低字节低字节低字节SHORT短转移说明短转移说明-128127字节间转移字节间转移n例:例:q N1 DB 15H,36H N2 DW 1122H,3344HLO:MOV AX,WORD PTR N1 MOV BL,BYTE PTR N2qFIRST EQU THIS BYTETABLE DW 200 DUP(?)qL1:JMP SHORT L2qK1 EQU 0ABCDHMOV AH,HIGH K1MOV BL,LOW K1其他运算符其他运算符符号符号名称名称运算结果运算结果()圆括号圆括号改变运算符优先级改变运算符优先级 方括号方括号下表或间接地址下表或间接地址 点运算符点运算符连接结构与变量连接结构与变量尖括号尖括号修改变量修改变量MASK记录位图记录位图位图形位图形WIDTH记录宽度记录宽度记录记录/字段位数字段位数运算符优先级运算符优先级优先级优先级运算符运算符1(),LENGTN,WIDTH,SIZE,MASK2PTR,OFFEST,SEG,TYPE,THIS,CS:,DS:,ES:,SS:3HIGH,LOW4*,/,MOD,SHL,SHR5,6EQ,NE,LT,LE,GT,GE7NOT8AND9OR,XOR10SHORT4.2 伪指令伪指令n1 数据定义语句和存储指令数据定义语句和存储指令n2 表达式赋值语句表达式赋值语句n3 段定义语句段定义语句n4 过程定义语句过程定义语句n5 程序开始和结束语句程序开始和结束语句n6 结构和宏定义语句结构和宏定义语句n7 外部伪指令及对准伪指令外部伪指令及对准伪指令1 数据定义语句数据定义语句DB 定义字节(定义字节(8位)位)DW 定义字(定义字(16位)位)DD 定义双字(定义双字(32位)位)DQ 定义四字(定义四字(64位)位)DT定义定义10个字节(个字节(80位)位)DUP产生重复的字符或数字产生重复的字符或数字存储段中数据存储指令存储段中数据存储指令PTR 指示存储器指针指示存储器指针BYTE 指示字节的长度的操作数,如同指示字节的长度的操作数,如同BYTE PTR WORD 指示字操作数的作用,如指示字操作数的作用,如WORD PTRDWORD 指示双字长度的操作数,如指示双字长度的操作数,如DWORD PTRNEAR 定义近指针定义近指针FAR 定义远指针定义远指针 n格式格式1:变量名:变量名 助记符助记符 操作数操作数,操作数操作数n格式格式2:变量名:变量名 助记符助记符 n DUP(操作数(操作数,操作数操作数.)qN必须是正整数,表示括号内操作数的重复次数必须是正整数,表示括号内操作数的重复次数n例如:例如:qDA1 DB 10H,23H ;变量变量DA1装入装入10H,23HqDA2 DW OK ;字符串字符串OK的的ASCII码装入码装入DA2开始的开始的存存 储单元中储单元中qDA3 DB?;变量变量DA3为不确定字节,保留为不确定字节,保留1字节空间字节空间qDA4 DB 5 DUP(0);重复重复5个个0存入存入DA4开始的存储单元中开始的存储单元中2 表达式赋值语句表达式赋值语句n1)赋值语句)赋值语句 EQU格式:格式:符号名符号名 EQU 表达式表达式 ;一个符号名只能定义一次一个符号名只能定义一次例:例:qCOUNT EQU 100;常数赋给符号名常数赋给符号名COUNTqDATA EQU COUNT+2;表达式赋给符号名表达式赋给符号名DATAqA1 EQU BX+SI;qB1 EQU ORRSET A1;qC1 EQU ADD;加法指令赋给符号名加法指令赋给符号名C1n2)等号语句)等号语句 与与EQU功能相同,可以重复定义,例如:功能相同,可以重复定义,例如:qCOUNT 100qCOUNT COUNT+103 段定义语句段定义语句段定义语句段定义语句SEGMENT ENDS定义段定义段段名段名 segment 定义类型定义类型 组合类型组合类型 分类分类名名段名段名 ends ;指示段或者结构结束指示段或者结构结束功能:将一个逻辑段定义成一个整体功能:将一个逻辑段定义成一个整体ASSUME 规定段所属的段寄存器规定段所属的段寄存器assume cs:段名段名,ds:段名段名,ss:段名段名,ES:段名段名功能:定义功能:定义4个逻辑段,指明段和段寄存器的个逻辑段,指明段和段寄存器的关系关系3 段定义语句段定义语句n定义类型是对该段起始位置的定义。参数有:定义类型是对该段起始位置的定义。参数有:qPARA,BYTE,WORD,PAGEn组合类型提出各个逻辑段之间的组合方式,参数组合类型提出各个逻辑段之间的组合方式,参数包括:包括:qNONE,PUBLIC,COMMON,AT 表达式表达式,STACK,MEMORYn分类名的主要作用式汇编程序连接时将所有同名分类名的主要作用式汇编程序连接时将所有同名的逻辑段组成一个段组。的逻辑段组成一个段组。n例:例:qDATA SEGMENT DI DW 1234H P1 DD?DATA ENDSSTACK SEGMENT STACK STACK DW 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK.CODE ENDS4 过程定义语句过程定义语句n格式:过程名格式:过程名 PROC 属性属性 ;过程内容过程内容 RET N 过程名过程名 ENDPn功能:定义一个过程,主程序可以用功能:定义一个过程,主程序可以用CALL指令调指令调用。用。n过程名的三种属性:过程名的三种属性:q段属性:该过程所在段的基址段属性:该过程所在段的基址q偏移地址属性:该过程第一字节与段首之间距离字节偏移地址属性:该过程第一字节与段首之间距离字节q距离属性:距离属性:NEAR或或FAR。n例:例:qMCODE SEGMENTMAIN SPD PROC FAR RETSPD ENDP CALL SPD MCODE ENDS5 程序开始和结束语句程序开始和结束语句NAME格式格式:NAME 程序名程序名功能功能:为源程序目标模块赋名字为源程序目标模块赋名字ORG格式格式:ORG 表达式表达式功能功能:给汇编程序设置位置指针,指定下面给汇编程序设置位置指针,指定下面 语句的起始偏移地址。语句的起始偏移地址。表达式表达式:给定的偏移地址值,结果是正整数给定的偏移地址值,结果是正整数END格式格式:END 标号名标号名功能功能:标记汇编源程序结束标记汇编源程序结束标号名标号名:该程序第一条可执行语句的标号名该程序第一条可执行语句的标号名6 结构和宏定义语句结构和宏定义语句n结构的定义结构的定义格式格式:结构名结构名 STRUC(用(用DB,DW,DD等语句定义数据变量)等语句定义数据变量)结构名结构名 ENDS功能功能:把各种不同类型的数据放在同一数据结构中把各种不同类型的数据放在同一数据结构中n结构付本预置结构付本预置 必须先预置结构付本,汇编程序给每个结构付本分配存必须先预置结构付本,汇编程序给每个结构付本分配存储空间。储空间。格式格式1:结构付本名结构付本名 结构名结构名 格式格式2:结构付本名结构付本名 结构名结构名 N DUP()n例:例:qTABSTRUCT1 DB ABCDT2 DW?T3 DW 2 DUP(0)TABENDS TWO TAB MOV TWO T2,AX6 结构和宏定义语句结构和宏定义语句n宏定义语句宏定义语句MACRO 定义宏的名字、参数和开始定义宏的名字、参数和开始 格式格式:宏名宏名 macroENDM 指示宏序列结束指示宏序列结束7 外部伪指令及对准伪指令外部伪指令及对准伪指令n外部伪指令外部伪指令qPUBLIC 名称,名称,名称,名称,.;注释注释qEXTRN 名称,类型,名称,类型,名称,类型,名称,类型,.;注释注释n对准伪指令对准伪指令q格式格式:EVENq功能功能:使下一语句的地址调整为偶地址使下一语句的地址调整为偶地址nLABELq格式格式:名称名称 LABEL 类型属性类型属性q功能功能:为为LABEL 下一行语句中的变量或标号取别名下一行语句中的变量或标号取别名n例:例:qDATA SEGMENT A1 DW 4 DUP(?)DATA ENDSCODE1 SEGMENT PUBLIC A1CODE1 ENDSPCODE SEGMENT EXTRN A1:WORDMIAN:MOV AX,OFFSET A1PCDOE ENDSEND MAINn例:例:qDATASEGMENTX1 DB 0DHEVENX2 DW 100 DUP(?)DATAENDSqDATBLABEL BYTEDATW DW 3031H,3233HMOV AL,DATB0MOV BX,DATW14.3 DOS系统功能调用系统功能调用n1.DOS键盘功能调用键盘功能调用n2.DOS显示功能调用显示功能调用n3.DOS打印功能调用打印功能调用n4.日期与时间设置日期与时间设置n5.异步通讯异步通讯n6.返回操作系统返回操作系统DOS常用的软中断命令常用的软中断命令软中断指令软中断指令 功功 能能 入口参数入口参数出口参数出口参数INT 20H 程序正常退出程序正常退出 无无无无INT 21H 系统功能调用系统功能调用AH功能号,相应入口号功能号,相应入口号 相应出口号相应出口号INT 22H 结束退出结束退出INT 23HCtrl-Break处理处理INT 24H 出错退出出错退出INT 25H 读磁盘读磁盘AL驱动器号驱动器号CX读入扇区数读入扇区数DX起始逻辑扇区号起始逻辑扇区号DS:BX内存缓冲区地址内存缓冲区地址CF0成功成功CF1出错出错INT 26H 写磁盘写磁盘同上,同上,CX写入扇区数写入扇区数同上同上INT 27H 驻留退出驻留退出DS:DX程序长度程序长度1.DOS键盘功能调用键盘功能调用 AH 功功 能能入口参数入口参数出口参数出口参数1从键盘输入一个字符,并在屏从键盘输入一个字符,并在屏幕上显示,检查幕上显示,检查Ctrl-Break键键AL字符字符8键盘输入一个字符,无回显键盘输入一个字符,无回显6直接键盘输入直接键盘输入/输出字符,不输出字符,不检查检查Ctrl-Break键键DL0FFHAL字符字符7直接键盘输入直接键盘输入/输出字符,无输出字符,无回显,不检查回显,不检查Ctrl-Break键键AL字符字符0AH输入字符串到内存缓冲区输入字符串到内存缓冲区DS:DX=缓冲区缓冲区首址首址0BH检查键盘输入状态检查键盘输入状态ALFFH有键有键入入,0 无键入无键入0CH清键盘缓冲区,调用键盘输入清键盘缓冲区,调用键盘输入功能功能AL键盘功能号键盘功能号2.DOS显示功能调用显示功能调用AH 功功 能能入口参数入口参数说明说明2显示一个字符,显示一个字符,检查检查Ctrl-Break键键DL字符字符光标跟踪字符光标跟踪字符移动移动6显示一个字符,显示一个字符,不检查不检查Ctrl-Break键键DL字符字符光标跟踪字符光标跟踪字符移动移动9显示字符串显示字符串DS:DX串地址串地址串以串以$结结束,光标跟随束,光标跟随移动移动3.DOS打印功能调用打印功能调用字符码字符码 功功 能能字符码字符码 功功 能能08H 空空 格格0FH设置紧缩方式设置紧缩方式09H 水平水平TAB(横表)(横表)0EH设置扩展方式设置扩展方式0AH 换换 行行12H取消紧缩方式取消紧缩方式0BH 垂直垂直TAB(纵表)(纵表)14H取消扩展方式取消扩展方式0CH 换换 页页1BH 30H设置每英寸设置每英寸8行行0DH 回回 车车1BH 32H设置每英寸设置每英寸16行行1BH 45H设置加重打印方式设置加重打印方式1BH 46H取消加重打印方式取消加重打印方式4.日期与时间设置日期与时间设置功能号功能号 功功 能能 入口参数入口参数 出口参数出口参数 2BH设置日期设置日期CX:年号;年号;DH:月号月号DL:日号日号AL=0成功成功AL=0FFH无效无效 2AH取消日期取消日期CX:年号;年号;DH:月号月号DL:日号日号 2DH设置时间设置时间CH:小时;小时;CL:分分DH:秒;秒;DL:百分之一秒百分之一秒AL=0成功成功AL=0FFH无效无效 2CH取消时间取消时间CH:小时;小时;CL:分分DH:秒;秒;DL:百分之一秒百分之一秒5.异步通讯异步通讯nMOV AH,4CHINT 21H6.返回操作系统返回操作系统功能号功能号 功能功能 入口参数入口参数 出口参数出口参数3异步通讯口输入异步通讯口输入AL=输入输入8位数据位数据4异步通讯口输入异步通讯口输入DL=输出输出8位数据位数据4.4 汇编程序格式汇编程序格式n1 高档微机新增伪指令高档微机新增伪指令n2 完整的段定义完整的段定义n3 模型方式格式模型方式格式1 高档微机增加的伪指令高档微机增加的伪指令.286选择选择80286指令系统指令系统.286P选择选择80286保护模式指令系统保护模式指令系统.386选择选择80386指令系统指令系统.386P选择选择80386保护模式指令系统保护模式指令系统.486选择选择80486指令系统指令系统.486P选择选择80486保护模式的指令系统保护模式的指令系统.586选择选择Pentium指令系统指令系统.586P选择选择Pentium保护模式指令系统保护模式指令系统.287选择选择80287数字协处理器数字协处理器.387选择选择80387数字协处理器数字协处理器1 高档微机增加的伪指令高档微机增加的伪指令.EXIT用来使程序设计模型退回到用来使程序设计模型退回到DOS.MODEL选择编程模型选择编程模型.STARTUP在编程模型中指示程序的开始在编程模型中指示程序的开始ALIGN2按字或双字分界的段中数据的开始按字或双字分界的段中数据的开始USES自动保存过程使用的寄存器自动保存过程使用的寄存器USE16386以上处理器使用以上处理器使用16位指令模式和数据长度位指令模式和数据长度USE32386以上处理器使用以上处理器使用32位指令模式和数据长度位指令模式和数据长度.STACK堆栈段堆栈段定义定义.CODE代码段代码段定义定义.DATA数据段数据段定义定义2 完整的程序格式(推荐使用)完整的程序格式(推荐使用)nstacksegment stack stack ;定义堆栈段定义堆栈段ndw 512 dup(?);堆栈段有堆栈段有512字空间字空间nstackends ;堆栈段结束堆栈段结束nData segment ;定义数据段定义数据段n .;在数据段定义数据在数据段定义数据ndata endsnCode segment ;定义代码段定义代码段n assume cs:code,ds:data,ss:stacknstart:mov ax,stack ;建立建立SS段地址段地址n mov ss,axn mov ax,data ;建立建立DS段地址段地址n mov ds,axn.;在代码段填入指令序列在代码段填入指令序列n mov ax,4c00hn int 21h ;利用功能调用返回利用功能调用返回DOSnCode ends ;代码段结束代码段结束n end start ;汇编结束,同时指明程序起始点汇编结束,同时指明程序起始点 实模式程序举例实模式程序举例nStack segment stack ;定义堆栈段定义堆栈段n dw 512 dup(?);堆栈段有堆栈段有512字空间字空间nstack ends ;堆栈段结束堆栈段结束nDatasegment ;定义数据段定义数据段nString db Hello,Everybody!,0dh,0ah,$ndataendsncodesegment ;定义代码段定义代码段n assume cs:code,ds:data,ss:stacknstart:mov ax,stack ;建立建立SS段地址段地址n mov ss,axn mov ax,data ;建立建立DS段地址段地址n mov ds,axn mov dx,offset stringn mov ah,9n int 21hn mov ax,4c00hn int 21h ;利用功能调用返回利用功能调用返回DOSnCode ends ;代码段结束代码段结束n end start ;汇编结束,同时指明程序起始点汇编结束,同时指明程序起始点结果:屏幕上显示结果:屏幕上显示Hello,Everybody!3 模型方式格式模型方式格式n.model small ;定义程序的存储模式定义程序的存储模式n.386 ;80386伪指令伪指令n;.386指令不要,就是实模式下的简化程序格式指令不要,就是实模式下的简化程序格式n.stack ;定义堆栈段(缺省定义堆栈段(缺省1K)n.data ;定义数据段定义数据段n.;定义数据定义数据n.code ;定义代码段定义代码段n.startup ;程序起始点,建立程序起始点,建立DS、SS内容内容n.;程序代码程序代码n.exit 0 ;程序结束点,返回程序结束点,返回DOSn ;子程序子程序nend ;汇编结束汇编结束 保护模式下程序举例保护模式下程序举例n .model small ;定义程序的存储模式定义程序的存储模式n .386 ;80386伪指令伪指令n .stack ;定义堆栈段定义堆栈段n .data ;定义数据段定义数据段nnum db 4 dup(0)n db 0dh,0ah,$n .code ;定义代码段定义代码段n .startup ;程序起始点,建立程序起始点,建立DS、SS内容内容n mov ebx,1020304hn add ebx,30303030hn mov dword ptr num,ebxn mov dx,offset num ;指定字符串的偏移地址指定字符串的偏移地址n mov ah,9n int 21h;利用功能调用显示信息利用功能调用显示信息n .exit 0 ;程序结束点,返回程序结束点,返回DOSn end;汇编结束汇编结束 结果:屏幕上显示结果:屏幕上显示4321.STACK 大小大小;堆栈段开始;堆栈段开始.DATA ;数据段开始;数据段开始.CODE 段名段名;代码段开始;代码段开始n简简化化段段定定义义伪伪指指令令指指明明一一个个逻逻辑辑段段的的开开始始,同同时自动结束前面的一个段。时自动结束前面的一个段。n采采用用简简化化段段定定义义伪伪指指令令前前,需需有有.model存存储储模模式语句。式语句。n使使用用简简化化段段定定义义,各各段段名名称称和和其其他他用用户户所所需需的的信信息息可可以以使使用用MASM预预定定义义符符号号,例例如如:data表示由表示由.data等定义的数据段的段名。等定义的数据段的段名。堆栈段伪指令堆栈段伪指令.STACK 大小大小n堆堆栈栈段段伪伪指指令令.STACK创创建建一一个个堆堆栈栈段段,段段名名是:是:stack。n它它的的参参数数指指定定堆堆栈栈段段所所占占存存储储区区的的字字节节数数,默默认是认是1KB(=1024=400h字节)。字节)。数据段伪指令数据段伪指令.DATAn数数据据段段伪伪指指令令.data创创建建一一个个数数据据段段,段段名名是是:_DATA。它它用用于于定定义义具具有有初初值值的的变变量量,当当然然也也允许定义无初值的变量。允许定义无初值的变量。n无无初初值值变变量量可可以以安安排排在在另另一一个个段段中中,它它用用.data?伪指令创建,数据段名是:伪指令创建,数据段名是:_BSS。n.const伪伪指指令令用用于于建建立立只只读读的的常常量量数数据据段段(段段名:名:CONST)。)。代码段伪指令代码段伪指令.CODE 段名段名n代代码码段段伪伪指指令令.code创创建建一一个个代代码码段段,它它的的参参数指定该代码段的段名。数指定该代码段的段名。n如果没有给出段名,则采用默认段名:如果没有给出段名,则采用默认段名:q在在TINY、SMALL、COMPACT和和FLAT模模式式下下,默默认的代码段名是:认的代码段名是:_TEXT;q在在MEDIUM、LARGE和和HUGE模模式式下下,默默认认的的代代码段名是:模块名码段名是:模块名_TEXT。程序开始伪指令程序开始伪指令.STARTUPn按按照照CPU类类型型、存存储储模模式式、操操作作系系统统和和堆堆栈栈类类型型,产产生生程程序序开开始始执执行行的的代代码码;同同时时还还指指定定程程序开始执行的起始点。序开始执行的起始点。n在在DOS下,还将设置下,还将设置DS值,调整值,调整SS和和SP值。值。程序终止伪指令程序终止伪指令.EXIT 返回参数返回参数n产生终止程序执行返回操作系统的指令代码。产生终止程序执行返回操作系统的指令代码。n它它的的可可选选参参数数是是一一个个返返回回的的数数码码,通通常常用用0表表示没有错误。例如示没有错误。例如.exit 0对应的代码是:对应的代码是:movmov ax,4c00h ax,4c00hintint 21h 21hnDOS功能调用的功能调用的4ch子功能(返回子功能(返回DOS):):入口参数:入口参数:AH4ch,AL返回数码返回数码汇编结束伪指令汇编结束伪指令END 标号标号n指示汇编程序指示汇编程序MASM到此结束汇编过程。到此结束汇编过程。n源程序的最后必须有一条源程序的最后必须有一条END语句。语句。n可可选选的的标标号号用用于于指指定定程程序序开开始始执执行行点点,连连接接程程序将据此设置序将据此设置CS:IP值。值。n注注意意,采采用用了了.startup伪伪指指令令就就不不需需要要再再用用“end 标标号号”指指明明开开始始执执行行点点,但但“end”伪伪指令还要有。指令还要有。存储模型存储模型n汇编语言的存储模型有:汇编语言的存储模型有:TINY,SMALL,MEDIUN,COMPACT,LARGE,HUGE,FLATTINY模式产生模式产生COM程序,其他模式产生程序,其他模式产生EXE程序,程序,FLAT模式只能用于模式只能用于32位程序。位程序。TINY微型模式微型模式n微微型型模模式式是是MASM 6.0才才引引入入的的,用用于于创创建建COM类型程序类型程序。n用用微微型型模模式式编编写写汇汇编编语语言言程程序序时时,所所有有的的段段地地址寄存器都被设置为同一个值。址寄存器都被设置为同一个值。n这这意意味味着着代代码码段段、数数据据段段、堆堆栈栈段段都都在在同同一一个个段段内内,不不大大于于64KB64KB;访访问问操操作作数数或或指指令令都都只只需需要使用要使用1616位偏移地址。位偏移地址。SMALL小型模式小型模式n一般的程序一般的程序都可用这种模式。都可用这种模式。n在在小小型型模模式式下下,一一个个程程序序有有一一个个代代码码段段和和一一个个数数据据段段,每段不大于每段不大于64KB。n这这里里的的数数据据段段是是指指数数据据段段、堆堆栈栈段段和和附附加加段段的的总总和和,它它们们共共用用同同一一个个段段基基址址,总总长长度度不不可可超超过过64KB;因因此小模式下程序的最大长度为此小模式下程序的最大长度为128KB。n访访问问操操作作数数或或指指令令都都只只需需要要使使用用16位位偏偏移移地地址址;这这意意味味着着诸诸如如指指令令转转移移、程程序序调调用用以以及及数数据据访访问问等等都都是是近近属属性性(NEAR),即即小小型型模模式式下下的的调调用用类类型型和和数数据据指指针缺省分别为近调用和近指针。针缺省分别为近调用和近指针。COMPACT紧凑模式紧凑模式n适合于数据量大但代码量小的程序适合于数据量大但代码量小的程序。n紧紧凑凑模模式式下下,代代码码段段被被限限制制在在一一个个不不大大于于64KB64KB的的段内;而段内;而数据段则可以有多个数据段则可以有多个,超过,超过64KB64KB。n这这种种模模式式下下的的调调用用类类型型缺缺省省仍仍为为近近调调用用;而而数数据据指指针针缺缺省省为为远远(FARFAR)指指针针,这这是是因因为为必必须须用用段段地地址来区别多个数据段。址来区别多个数据段。MEDIUM中型模式中型模式n中型模式是与紧凑模式互补的模式,中型模式是与紧凑模式互补的模式,适合于数据适合于数据量小但代码量大的程序量小但代码量大的程序。n中中型型模模式式的的代代码码段段可可以以超超过过64KB,有有多多个个;但但数数据段只能有一个据段只能有一个不大于不大于64KB的段。的段。n这这种种模模式式下下的的数数据据指指针针缺缺省省为为近近指指针针;但但调调用用类类型型缺缺省省是是远远(FAR)调调用用,因因为为要要利利用用段段地地址址区区别多个代码段。别多个代码段。LARGE大型模式大型模式n较大型程序通常采用的存储模式。较大型程序通常采用的存储模式。n大大型型模模式式允允许许的的代代码码段段和和数数据据段段都都有有多多个个,都都可可以以超超过过64KB64KB;但但全全部部的的静静态态数数据据(不不能能改改变变的的数数据)仍限制在据)仍限制在64K64K字节内。字节内。n大大型型模模式式下下的的调调用用类类型型和和数数据据指指针针缺缺省省分分别别为为远远调用和远指针。调用和远指针。HUGE(巨型模式)(巨型模式)n与大型模式基本相同,只是静态数据不再被限制与大型模式基本相同,只是静态数据不再被限制在在64K字节之内。字节之内。FLAT平展模式平展模式n平平展展模模式式用用于于创创建建一一个个32位位的的程程序序,它它只只能能运运行行在在32位位x86 CPU上。上。nDOS下下 不不 能能 使使 用用 FLAT模模 式式,而而 编编 写写 32位位Windows 9.x或或Windows-NT的的程程序序时时,必必须须采采用用FLAT模式。模式。汇编语言程序的开发过程汇编语言程序的开发过程n1.源程序的编辑源程序的编辑n EDIT 源文件名,扩展名必须是.asm。n2.源程序的汇编源程序的汇编nMASM 6.x版本:ml.exe 如 ml/c lt301a.asmnMASM 5.x版本:masm.exe 如 masm lt301a.asmn3.目标文件的连接目标文件的连接n将一个或多个目标文件与库文件合并成一个可执行文件(.exe,.com):LINK lt301a.objn LINK的一般格式:n LINK/参数选项 obj文件列表 exe文件名,mapn 文件名,库文件名 4.ML.EXE的用法的用法nML.EXE可以自动调用LINK程序,实现汇编和连接自动地依次进行。其一般格式如下:n常用参数选项如下(参数大小写敏感):n/c(小写):只汇编,不连接。n/Fl 文件名:创建一个汇编列表文件(.lst)。n/Fr 文件名:创建一个可在PWB下浏览的.SBR文件。n/Fo 文件名:生成指定的.OBJ文件,不用缺省名。n/Fe 文件名:生成指定的.EXE文件,不用缺省名。n/Fm 文件名:创建一个连接映象文件(.MAP)。n/Sg 在列表文件中,列出由汇编程序产生的指令。ML/ML/参数选项参数选项 文件列表文件列表 LINK LINK 连接参数选项连接参数选项 5.两个文件的介绍两个文件的介绍(.lst.map)n要生成列表文件和连接映象文件,可以输入如下形式的命令:nML /Fl/Fm/Sg lt301a.asm注释:注释:q注意大小写;q参数/Sg将.startup,.exit等伪指令转换成硬指令
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!