中科院自动化所考研之中科大微机原理课件42-43_增加后版本

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四章汇编语言程序设计4.1程序格式和表达式程序格式MASM中的语句分为指令性语句和伪指令语句指令性语句与机器指令相对应,汇编程序将它们翻译成目标代码。语句格式为:标号:指令助记符操作数,操作数;注释伪指令语句没有对应的机器指令,可完成数据定义,存储区分配,段定义,段分配,指示程序结束等功能。名字伪指令指示符操作数,操作数;注释汇编语言中常数,变量和标号是三种基本数据项4.1程序格式和表达式MASM中的表达式算术运算符逻辑运算符关系运算符数值返回修改属性其他运算符运算符优先级算术运算符符号名称运算结果+加法和-减法差*乘法积/除法商MOD模除余数SHL左移左移后的二进制数SHR右移右移后的二进制数例:ARRAYDB1,2,3,4,5TRYDB20MOVAX,30*5MOVCX,(TRY–ARRAY)DAEQU300MOVCX,DA/100逻辑运算符符号名称运算结果AND与运算逻辑与结果OR或运算逻辑或结果XOR异或运算逻辑异或结果NOT非运算逻辑非结果例:MOVAL,NOTOFFHMOVBL,8CHAND73HMOVAH,8CHOR73HMOVCH,8CHXOR73H关系运算符符号名称运算结果为真输出全‘1’,为假输出全‘0’EQ相等NE不等LT小于LE小于等于GT大于GE大于等于例:MOVAX,10HGT16ADDBL,6EQ0110BMOVCX,((PORTLT5)AND100)OR((PORTGE5)AND200)数值返回符号名称运算结果OFFSET返回偏移地址偏移地址SEG返回段地址段地址TYPE返回元素字节数字节数LENGTH返回变量单元数单元数SIZE返回变量总字节数总字节数例:MOVBX,OFFSETDA1MOVAX,SEGM1MOVDS,AXA1DB20H,30HMOVAH,TYPEA1MOVCX,LENGTHA1MOVBL,SIZEA1修改属性符号名称运算结果段寄存器名段前缀修改段PTR修改类型属性修改后类型THIS指定类型/距离属性指定后类型HIGH分离高字节高字节LOW分离低字节低字节SHORT短转移说明-128~127字节间转移例:N1DB15H,36HN2DW1122H,3344HLO:MOVAX,WORDPTRN1MOVBL,BYTEPTRN2FIRSTEQUTHISBYTETABLEDW200DUP(?)L1:JMPSHORTL2K1EQU0ABCDHMOVAH,HIGHK1MOVBL,LOWK1其他运算符符号名称运算结果()圆括号改变运算符优先级[]方括号下表或间接地址•点运算符连接结构与变量尖括号修改变量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伪指令1数据定义语句和存储指令2表达式赋值语句3段定义语句4过程定义语句5程序开始和结束语句6结构和宏定义语句7外部伪指令及对准伪指令1数据定义语句DB定义字节(8位)DW定义字(16位)DD定义双字(32位)DQ定义四字(64位)DT定义10个字节(80位)DUP产生重复的字符或数字存储段中数据存储指令PTR指示存储器指针BYTE指示字节的长度的操作数,如同BYTEPTRWORD指示字操作数的作用,如WORDPTRDWORD指示双字长度的操作数,如DWORDPTRNEAR定义近指针FAR定义远指针格式1:变量名助记符操作数,操作数…格式2:变量名助记符nDUP(操作数,操作数….)N必须是正整数,表示括号内操作数的重复次数例如:DA1DB10H,23H;变量DA1装入10H,23HDA2DW‘OK’;字符串‘OK’的ASCII码装入DA2开始的存储单元中DA3DB?;变量DA3为不确定字节,保留1字节空间DA4DB5DUP(0);重复5个0存入DA4开始的存储单元中2表达式赋值语句1)赋值语句EQU格式:符号名EQU表达式;一个符号名只能定义一次例:COUNTEQU100;常数赋给符号名COUNTDATAEQUCOUNT+2;表达式赋给符号名DATAA1EQU[BX+SI];B1EQUORRSETA1;C1EQUADD;加法指令赋给符号名C12)等号语句=与EQU功能相同,可以重复定义,例如:COUNT=100COUNT=COUNT+103段定义语句段定义语句SEGMENTENDS定义段段名segment定义类型组合类型‘分类名’段名ends;指示段或者结构结束功能:将一个逻辑段定义成一个整体ASSUME规定段所属的段寄存器assumecs:段名,ds:段名,ss:段名,ES:段名功能:定义4个逻辑段,指明段和段寄存器的关系3段定义语句定义类型是对该段起始位置的定义。参数有:PARA,BYTE,WORD,PAGE组合类型提出各个逻辑段之间的组合方式,参数包括:NONE,PUBLIC,COMMON,AT表达式,STACK,MEMORY分类名的主要作用式汇编程序连接时将所有同名的逻辑段组成一个段组。例:DATASEGMENTDIDW1234HP1DD?DATAENDSSTACKSEGMENTSTACK‘STACK’DW100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK…….CODEENDS4过程定义语句格式:过程名PROC属性;过程内容RETN过程名ENDP功能:定义一个过程,主程序可以用CALL指令调用。过程名的三种属性:段属性:该过程所在段的基址偏移地址属性:该过程第一字节与段首之间距离字节距离属性:NEAR或FAR。例:MCODESEGMENTMAIN••SPDPROCFAR•••RETSPDENDP•••CALLSPD•••MCODEENDS5程序开始和结束语句NAME格式:NAME程序名功能:为源程序目标模块赋名字ORG格式:ORG表达式功能:给汇编程序设置位置指针,指定下面语句的起始偏移地址。表达式:给定的偏移地址值,结果是正整数END格式:END标号名功能:标记汇编源程序结束标号名:该程序第一条可执行语句的标号名6结构和宏定义语句结构的定义格式:结构名STRUC(用DB,DW,DD等语句定义数据变量)结构名ENDS功能:把各种不同类型的数据放在同一数据结构中结构付本预置必须先预置结构付本,汇编程序给每个结构付本分配存储空间。格式1:结构付本名结构名元素值,元素值…格式2:结构付本名结构名NDUP(元素值,元素值…)例:TABSTRUCT1DB‘ABCD’T2DW?T3DW2DUP(0)TABENDS•••TWOTAB‘STOP’•••MOVTWO•T2,AX6结构和宏定义语句宏定义语句MACRO定义宏的名字、参数和开始格式:宏名macroENDM指示宏序列结束7外部伪指令及对准伪指令外部伪指令PUBLIC名称,名称,….;注释EXTRN名称,类型,名称,类型,….;注释对准伪指令格式:EVEN功能:使下一语句的地址调整为偶地址LABEL格式:名称LABEL类型属性功能:为LABEL下一行语句中的变量或标号取别名例:DATASEGMENTA1DW4DUP(?)DATAENDSCODE1SEGMENT•••PUBLICA1CODE1ENDSPCODESEGMENTEXTRNA1:WORDMIAN:••••••MOVAX,OFFSETA1PCDOEENDSENDMAIN例:DATASEGMENTX1DB0DHEVENX2DW100DUP(?)DATAENDSDATBLABELBYTEDATWDW3031H,3233HMOVAL,DATB[0]MOVBX,DATW[1]4.3DOS系统功能调用1.DOS键盘功能调用2.DOS显示功能调用3.DOS打印功能调用4.日期与时间设置5.异步通讯6.返回操作系统DOS常用的软中断命令软中断指令功能入口参数出口参数INT20H程序正常退出无无INT21H系统功能调用AH=功能号,相应入口号相应出口号INT22H结束退出INT23HCtrl-Break处理INT24H出错退出INT25H读磁盘AL=驱动器号CX=读入扇区数DX=起始逻辑扇区号DS:BX=内存缓冲区地址CF=0成功CF=1出错INT26H写磁盘同上,CX=写入扇区数同上INT27H驻留退出DS:DX=程序长度1.DOS键盘功能调用AH功能入口参数出口参数1从键盘输入一个字符,并在屏幕上显示,检查Ctrl-Break键AL=字符8键盘输入一个字符,无回显6直接键盘输入/输出字符,不检查Ctrl-Break键DL=0FFHAL=字符7直接键盘输入/输出字符,无回显,不检查Ctrl-Break键AL=字符0AH输入字符串到内存缓冲区DS:DX=缓冲区首址0BH检查键盘输入状态AL=FFH有键入,=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换页1BH30H设置每英寸8行0DH回车1BH32H设置每英寸16行1BH45H设置加重打印方式1BH46H取消加重打印方式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.异步通讯MOVAH,4CHINT21H6.返回操作系统功能号功能入口参数出口参数3异步通讯口输入AL=输入8位数据4异步通讯口输入DL=输出8位数据4.4汇编程序格式1高档微机新增伪指令2完整的段定义3模型方式格式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完整的程序格式(推荐使用)stacksegmentstack’stack’;定义堆栈段dw512dup(?);堆栈段有512字空间stackends;堆栈段结束Datasegment;定义数据段...;在数据段定义数据dataendsCodesegment;定义代码段assumecs:code,ds:data,ss:stackstart:movax,st

1 / 64
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功