




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章第四章 汇编语言程序设计汇编语言程序设计4.1程序格式和表达式程序格式和表达式n程序格式程序格式qMASM中的语句分为指令性语句和伪指令语句中的语句分为指令性语句和伪指令语句q指令性语句与机器指令相对应,汇编程序将它们翻译成指令性语句与机器指令相对应,汇编程序将它们翻译成目标代码。语句格式为:目标代码。语句格式为:n标号标号: 指令助记符指令助记符 操作数,操作数操作数,操作数 ; 注释注释q伪指令语句没有对应的机器指令,可完成数据定义,存伪指令语句没有对应的机器指令,可完成数据定义,存储区分配,段定义,段分配,指示程序结束等功能。储区分配,段定义,段分配,指示程序结束等功能。n名字名字
2、 伪指令指示符伪指令指示符 操作数,操作数操作数,操作数 ; 注释注释q汇编语言中常数,变量和标号是三种基本数据项汇编语言中常数,变量和标号是三种基本数据项4.1程序格式和表达式程序格式和表达式nMASM中的表达式中的表达式q算术运算符算术运算符q逻辑运算符逻辑运算符q关系运算符关系运算符q数值返回数值返回q修改属性修改属性q其他运算符其他运算符q运算符优先级运算符优先级算术运算符算术运算符符号符号名称名称运算结果运算结果加法加法和和减法减法差差*乘法乘法积积/除法除法商商MOD模除模除余数余数SHL左移左移左移后的二进制数左移后的二进制数SHR右移右移右移后的二进制数右移后的二进制数n例:例
3、: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关系运算符关系运算符符号符号名称名称运算结果为真
4、输出全运算结果为真输出全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返回变量总字节数返回变量
5、总字节数 总字节数总字节数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例
6、:例: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记录位图记录位
7、图位图形位图形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
8、 段定义语句段定义语句n4 过程定义语句过程定义语句n5 程序开始和结束语句程序开始和结束语句n6 结构和宏定义语句结构和宏定义语句n7 外部伪指令及对准伪指令外部伪指令及对准伪指令1 数据定义语句数据定义语句DB 定义字节(定义字节(8位)位)DW 定义字(定义字(16位)位)DD 定义双字(定义双字(32位)位)DQ 定义四字(定义四字(64位)位)DT定义定义10个字节(个字节(80位)位)DUP产生重复的字符或数字产生重复的字符或数字存储段中数据存储指令存储段中数据存储指令PTR 指示存储器指针指示存储器指针BYTE 指示字节的长度的操作数,如同指示字节的长度的操作数,如同BYTE P
9、TR WORD 指示字操作数的作用,如指示字操作数的作用,如WORD PTRDWORD 指示双字长度的操作数,如指示双字长度的操作数,如DWORD PTRNEAR 定义近指针定义近指针FAR 定义远指针定义远指针 n格式格式1:变量名:变量名 助记符助记符 操作数操作数, 操作数操作数n格式格式2:变量名:变量名 助记符助记符 n DUP(操作数(操作数,操作数操作数.)qN必须是正整数,表示括号内操作数的重复次数必须是正整数,表示括号内操作数的重复次数n例如:例如:qDA1 DB 10H, 23H ; 变量变量DA1装入装入10H , 23HqDA2 DW OK ; 字符串字符串OK的的AS
10、CII码装入码装入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
11、 EQU ORRSET A1;qC1 EQU ADD; 加法指令赋给符号名加法指令赋给符号名C1n2)等号语句)等号语句 与与EQU功能相同,可以重复定义,例如:功能相同,可以重复定义,例如:qCOUNT 100qCOUNT COUNT + 103 段定义语句段定义语句段定义语句段定义语句SEGMENT ENDS定义段定义段段名段名 segment 定义类型定义类型 组合类型组合类型 分类分类名名段名段名 ends ;指示段或者结构结束指示段或者结构结束功能:将一个逻辑段定义成一个整体功能:将一个逻辑段定义成一个整体ASSUME 规定段所属的段寄存器规定段所属的段寄存器assume cs:段名
12、段名, ds:段名段名, ss:段名段名,ES:段名段名功能:定义功能:定义4个逻辑段,指明段和段寄存器的个逻辑段,指明段和段寄存器的关系关系3 段定义语句段定义语句n定义类型是对该段起始位置的定义。参数有:定义类型是对该段起始位置的定义。参数有:qPARA,BYTE,WORD,PAGEn组合类型提出各个逻辑段之间的组合方式,参数组合类型提出各个逻辑段之间的组合方式,参数包括:包括:qNONE,PUBLIC,COMMON,AT 表达式表达式,STACK, MEMORYn分类名的主要作用式汇编程序连接时将所有同名分类名的主要作用式汇编程序连接时将所有同名的逻辑段组成一个段组。的逻辑段组成一个段组
13、。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段属性:该过程所在段的基址段
14、属性:该过程所在段的基址q偏移地址属性:该过程第一字节与段首之间距离字节偏移地址属性:该过程第一字节与段首之间距离字节q距离属性:距离属性:NEAR或或FAR。n例:例:qMCODE SEGMENTMAIN SPD PROC FAR RETSPD ENDP CALL SPD MCODE ENDS5 程序开始和结束语句程序开始和结束语句NAME格式格式: NAME 程序名程序名功能功能: 为源程序目标模块赋名字为源程序目标模块赋名字ORG格式格式: ORG 表达式表达式功能功能: 给汇编程序设置位置指针,指定下面给汇编程序设置位置指针,指定下面 语句的起始偏移地址。语句的起始偏移地址。表达式表达
15、式: 给定的偏移地址值,结果是正整数给定的偏移地址值,结果是正整数END格式格式: END 标号名标号名功能功能: 标记汇编源程序结束标记汇编源程序结束标号名标号名: 该程序第一条可执行语句的标号名该程序第一条可执行语句的标号名6 结构和宏定义语句结构和宏定义语句n结构的定义结构的定义格式格式: 结构名结构名 STRUC(用(用DB,DW,DD等语句定义数据变量)等语句定义数据变量) 结构名结构名 ENDS功能功能: 把各种不同类型的数据放在同一数据结构中把各种不同类型的数据放在同一数据结构中n结构付本预置结构付本预置 必须先预置结构付本,汇编程序给每个结构付本分配存必须先预置结构付本,汇编程
16、序给每个结构付本分配存储空间。储空间。格式格式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 名称,名称,名称,名
17、称,. ; 注释注释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,
18、OFFSET A1PCDOE ENDSEND MAINn例:例:qDATA SEGMENTX1 DB 0DHEVENX2 DW 100 DUP(?)DATA ENDSqDATB LABEL BYTEDATW DW 3031H, 3233HMOV AL, DATB0MOV BX, DATW14.3 DOS系统功能调用系统功能调用n1. DOS键盘功能调用键盘功能调用n2. DOS显示功能调用显示功能调用n3. DOS打印功能调用打印功能调用n4. 日期与时间设置日期与时间设置n5. 异步通讯异步通讯n6. 返回操作系统返回操作系统DOS常用的软中断命令常用的软中断命令软中断指令软中断指令 功功
19、能能 入口参数入口参数出口参数出口参数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.
20、 DOS键盘功能调用键盘功能调用 AH 功功 能能入口参数入口参数出口参数出口参数1从键盘输入一个字符,并在屏从键盘输入一个字符,并在屏幕上显示,检查幕上显示,检查Ctrl-Break键键AL字符字符8键盘输入一个字符,无回显键盘输入一个字符,无回显6直接键盘输入直接键盘输入/输出字符,不输出字符,不检查检查Ctrl-Break键键DL0FFHAL字符字符7直接键盘输入直接键盘输入/输出字符,无输出字符,无回显,不检查回显,不检查Ctrl-Break键键AL字符字符0AH输入字符串到内存缓冲区输入字符串到内存缓冲区DS:DX=缓冲区缓冲区首址首址0BH检查键盘输入状态检查键盘输入状态ALFFH
21、有键有键入入,0 无键入无键入0CH清键盘缓冲区,调用键盘输入清键盘缓冲区,调用键盘输入功能功能AL键盘功能号键盘功能号2. DOS显示功能调用显示功能调用AH 功功 能能入口参数入口参数说明说明2显示一个字符,显示一个字符,检查检查Ctrl-Break键键DL字符字符光标跟踪字符光标跟踪字符移动移动6显示一个字符,显示一个字符,不检查不检查Ctrl-Break键键DL字符字符光标跟踪字符光标跟踪字符移动移动9显示字符串显示字符串DS:DX串地址串地址串以串以$结束,结束,光标跟随移动光标跟随移动3. DOS打印功能调用打印功能调用字符码字符码 功功 能能字符码字符码 功功 能能08H 空空
22、格格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
23、成功成功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 汇编程
24、序格式汇编程序格式n1 高档微机新增伪指令高档微机新增伪指令n2 完整的段定义完整的段定义n3 模型方式格式模型方式格式1 高档微机增加的伪指令高档微机增加的伪指令.286选择选择80286指令系统指令系统.286P选择选择80286保护模式指令系统保护模式指令系统.386选择选择80386指令系统指令系统.386P选择选择80386保护模式指令系统保护模式指令系统.486选择选择80486指令系统指令系统.486P选择选择80486保护模式的指令系统保护模式的指令系统.586选择选择Pentium指令系统指令系统.586P选择选择Pentium保护模式指令系统保护模式指令系统.287选择选择
25、80287数字协处理器数字协处理器.387选择选择80387数字协处理器数字协处理器1 高档微机增加的伪指令高档微机增加的伪指令.EXIT用来使程序设计模型退回到用来使程序设计模型退回到DOS.MODEL选择编程模型选择编程模型.STARTUP在编程模型中指示程序的开始在编程模型中指示程序的开始ALIGN2按字或双字分界的段中数据的开始按字或双字分界的段中数据的开始USES自动保存过程使用的寄存器自动保存过程使用的寄存器USE16386以上处理器使用以上处理器使用16位指令模式和数据长度位指令模式和数据长度USE32386以上处理器使用以上处理器使用32位指令模式和数据长度位指令模式和数据长度
26、.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, stac
27、k ;建立建立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 ;堆栈段结束堆栈段结束
28、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 ;利用功能调用返回利用功能调用返回DO
29、SnCode 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 ; 程序
30、起始点,建立程序起始点,建立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
31、, 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简化段定义伪指令指明一个逻辑段的开始,同简化段定义伪指令指明一个
32、逻辑段的开始,同时自动结束前面的一个段。时自动结束前面的一个段。n采用简化段定义伪指令前,需有采用简化段定义伪指令前,需有.model存储存储模式语句。模式语句。n使用简化段定义,各段名称和其他用户所需的使用简化段定义,各段名称和其他用户所需的信息可以使用信息可以使用MASM预定义符号预定义符号,例如:,例如:data表示由表示由.data等定义的数据段的段名。等定义的数据段的段名。堆栈段伪指令堆栈段伪指令.STACK 大小大小n堆栈段伪指令堆栈段伪指令.STACK创建一个堆栈段,段名创建一个堆栈段,段名是:是:stack。n它的参数指定堆栈段所占存储区的字节数,默它的参数指定堆栈段所占存储区
33、的字节数,默认是认是1KB(= 1024 = 400h字节)。字节)。数据段伪指令数据段伪指令.DATAn数据段伪指令数据段伪指令.data创建一个数据段,段名是:创建一个数据段,段名是:_DATA。它用于定义具有初值的变量,当然。它用于定义具有初值的变量,当然也允许定义无初值的变量。也允许定义无初值的变量。n无 初 值 变 量 可 以 安 排 在 另 一 个 段 中 , 它无 初 值 变 量 可 以 安 排 在 另 一 个 段 中 , 它用用.data?伪指令创建,数据段名是:伪指令创建,数据段名是:_BSS。n. const伪指令用于建立只读的常量数据段伪指令用于建立只读的常量数据段(段名
34、:(段名:CONST)。)。代码段伪指令代码段伪指令.CODE 段名段名n代码段伪指令代码段伪指令.code创建一个代码段,它的参创建一个代码段,它的参数指定该代码段的段名。数指定该代码段的段名。n如果没有给出段名,则采用默认段名:如果没有给出段名,则采用默认段名:q在在TINY、SMALL、COMPACT和和FLAT模式下,模式下,默认的代码段名是:默认的代码段名是:_TEXT;q在在MEDIUM、LARGE和和HUGE模式下,默认的代模式下,默认的代码段名是:模块名码段名是:模块名_TEXT。程序开始伪指令程序开始伪指令.STARTUPn按照按照CPU类型、存储模式、操作系统和堆栈类类型、
35、存储模式、操作系统和堆栈类型,产生程序开始执行的代码;同时还指定程型,产生程序开始执行的代码;同时还指定程序开始执行的起始点。序开始执行的起始点。n在在DOS下,还将设置下,还将设置DS值,调整值,调整SS和和SP值。值。程序终止伪指令程序终止伪指令.EXIT 返回参数返回参数n产生终止程序执行返回操作系统的指令代码。产生终止程序执行返回操作系统的指令代码。n它的可选参数是一个返回的数码,通常用它的可选参数是一个返回的数码,通常用0表表示没有错误。例如示没有错误。例如.exit 0对应的代码是:对应的代码是:mov ax,4c00hmov ax,4c00hint 21hint 21hnDOS功
36、能调用的功能调用的4ch子功能(返回子功能(返回DOS):):入口参数:入口参数:AH4ch,AL返回数码返回数码汇编结束伪指令汇编结束伪指令END 标号标号n指示汇编程序指示汇编程序MASM到此结束汇编过程。到此结束汇编过程。n源程序的最后必须有一条源程序的最后必须有一条END语句。语句。n可选的标号用于指定程序开始执行点,连接程可选的标号用于指定程序开始执行点,连接程序将据此设置序将据此设置CS : IP值。值。n注意,采用了注意,采用了.startup伪指令就不需要再用伪指令就不需要再用“end 标号标号”指明开始执行点,但指明开始执行点,但“end”伪伪指令还要有。指令还要有。存储模型
37、存储模型n汇编语言的存储模型有:汇编语言的存储模型有: TINY,SMALL,MEDIUN,COMPACT, LARGE,HUGE,FLATTINY模式产生模式产生COM程序,其他模式产生程序,其他模式产生EXE程序,程序,FLAT模式只能用于模式只能用于32位程序。位程序。TINY微型模式微型模式n微型模式是微型模式是MASM 6.0才引入的,才引入的,用于创建用于创建COM类型程序类型程序。n用微型模式编写汇编语言程序时,所有的段地用微型模式编写汇编语言程序时,所有的段地址寄存器都被设置为同一个值。址寄存器都被设置为同一个值。n这意味着代码段、数据段、堆栈段都在同这意味着代码段、数据段、堆
38、栈段都在同一个一个段段内,内,不大于不大于64KB64KB;访问操作数或指令都只需;访问操作数或指令都只需要使用要使用1616位偏移地址。位偏移地址。SMALL小型模式小型模式n一般的程序一般的程序都可用这种模式。都可用这种模式。n在小型模式下,一个程序在小型模式下,一个程序有一个代码段和一个数据段有一个代码段和一个数据段,每段不大于每段不大于64KB。n这里的数据段是指数据段、堆栈段和附加段的总和,这里的数据段是指数据段、堆栈段和附加段的总和,它们共用同一个段基址,总长度不可超过它们共用同一个段基址,总长度不可超过64KB;因;因此小模式下程序的最大长度为此小模式下程序的最大长度为128KB
39、。n访问操作数或指令都只需要使用访问操作数或指令都只需要使用16位偏移地址;这意位偏移地址;这意味着诸如指令转移、程序调用以及数据访问等都是味着诸如指令转移、程序调用以及数据访问等都是近近属性(属性(NEAR),即小型模式下的调用类型和数据指,即小型模式下的调用类型和数据指针缺省分别为近调用和近指针。针缺省分别为近调用和近指针。COMPACT紧凑模式紧凑模式n适合于数据量大但代码量小的程序适合于数据量大但代码量小的程序。n紧凑模式下,紧凑模式下,代码段代码段被限制在被限制在一个一个不大于不大于64KB64KB的的段内;而段内;而数据段则可以有多个数据段则可以有多个,超过,超过64KB64KB。n这种模式下的调用类型缺省仍为近调用;而数据这种模式下的调用类型缺省仍为近调用;而数据指针缺省为远(指针缺省为远(FARFAR)指针,这是因为必须用段地)指针,这是因为必须用段地址来区别多个数据段。址来区别多个数据段。MEDIUM中型模式中型模式n中型模式是与紧凑模式互补的模式,中型模式是与紧凑模式互补的模式,适合于数据适合于数据量小但代码量大的程序量小但代码量大的程序。n中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 试训队员合同协议书
- 2025年药物检测设备项目发展计划
- 网红美食区域代理加盟合同及特色配料研发供应协议
- 网上商店经营风险管理与责任协议
- 土地承包经营权流转与农业循环经济项目合作协议
- 医用麻醉设备全面检修与保养合同
- 快递末端网点承包经营与快递成本控制协议
- 跨境网络游戏版号申请代理服务合同
- 农村留守儿童劳动教育扶持协议
- 抖音平台短视频内容创作者收益分配与权益保障协议
- 微生物实验室病原微生物评估报告
- 陕旅版五年级英语上册句型词汇知识点总结
- 汉字构字的基本原理和识字教学模式分析
- RouterOS介绍
- 综采工作面液压支架压死救活技术研究
- 十字轴锻造成型工艺及模具设计毕业论文
- 主体结构监理实施细则范本
- 控制性详细规划 - 宁波市规划局
- 保洁员工考勤表
- JGJ8-2016建筑变形测量规范
- 《MSDS培训资料》PPT课件.ppt
评论
0/150
提交评论