汇编主要内容_第1页
汇编主要内容_第2页
汇编主要内容_第3页
汇编主要内容_第4页
汇编主要内容_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、厂教师:高飞U第-章 帯二章 S im 帯養章 帯六章帯八章 弟九章目 杲14我辄韵细案筑和辱址步趺册啄堵今支穆寿演幷手ow*级m碼*技术 输入肿曲種序设计ZQSIteQSWr3151.1迸忧计數制L1J二进制(甘膜补昭)A T TLL2 wm: + AM*降寨法例:N=117D,小于N的二进制权为:64 3216对应的二进制数:111除法基数:除二取余例:N=117D229147卑0余101011N=1110101 (B)小St:例畫N=0. 625D取整2祕 6251. 251高 01。0 10。0N=0.101B1.13 wm:十六送制歡一二送制歎十六十感制數1.3计算机中的数和字符的表

2、示机器中数可有:原码、反码、补码表示13.1歡韵补昭JR乘负数补码表示的一个简单方法:先写 出与该负数相 对应的正数的命卜码 表示,再将其求反力口 1, 就可得到该负 数的补码表示。用补昭厦索歡酎韵借导扩14几种基本的逻辑运糞:与、襄、非、弄玻980;子 系接口一詈丿计算机结构CPURAMI/O 端口运算器寄存器组存储器输入或输出端口存储器概念存储器是一片连续的内存空间:1 )以字予为单位存储信息。2) 毎一个字节单元给以一个存址。地址从0开始,川页序地加1。用无符号十六进制 数表示:如0100H, 1A105H3) 一个存储单元中存放的信息称为该单吴的1客。4) 一个字存入存储器要占JR相继

3、的列个字:低位字节放入低地址,高位字节放入高地址。5) 字单元地址用它的低地址来表示。存储器概念存储器地址存储器内容1A050H字节单元的内容是:56H,其字单 元内容是:1256HO1A055H字节单元的内容是:97H,其字单 元内容是:8097Ho1A056H字节单元的内容是:80H,其字单 元内容是:0FE80H。1A050H56H1A051H12H1A052H3AH1A053H4BH1A054H00H1A055H97H1A056H80H1A057HFEH存储器地址的分段8086PC 机:*20tfc3h, 最大存储容量为22 =1O24K=1M字节; *16tfc寧也:内部寄存器最大存

4、储空间为216 = 64K字节。8086PC,用什么办法来提供20位存储器地址呢?存储器地址分段法HI秒地址,粉宜地址形理地址的计算方法 刁叹表示:15016位段地址150000016位偏移地址+1920位物理地址刁写廉:76dX段地址+偏移地址二彫理地址在IEM PC机中,个专门 存放段地址的寄存器,称为段寄存器。它们是:代码段CS:代码段存放当前正在运行的程序;数据段DS:数据段存放当前运行程序所用的数据; 堆栈段SS:堆栈段定义堆栈的所在区域;附加段ES:附加段是附加的数据段,辅助的数据区。一般4青况下,各段在存储器中的分配是由操作 系统负责的。允许重叠(重叠是指小于64K) o中央处理

5、机中央处理机CPU的组成*算术逻辑部件 ALU (Arithmetic Logic Unit)负责对全机的控制:取指,译码,发命令,协调各部件工作。进行算术逻辑运算斗工作寄存器组用于存放操作数、地址、运算中间 结果、结果等。存取速度比存储器快得多。2315标志名标恚为1标恚为0OF溢出(是/否)0VNVDF方向(减量/增量)DNUPIF中断(允许/禁止)EIDISF符号(负/正)NGPLZF零(是/否)ZRNZAF辅助进位(是/否)ACNAPF奇偶(偶倚)PEPO财啰中标恵忧的苻号褻贰阿引CF进位(是/否)CY NC27第三章和寻址方或要利用计算机为我们服务就要编写程序让计 算机执行。本章是本

6、书的重点部分,了解CPU 究竟能干什么及它是如何找到内存中存放的程 序和数据的条指令存放在内存的何处?地址有关寻址;指令中的操作数在何处?操作数有关寻址 一、与操作数有关的寻址方式* IMf寺IWBtlt韵尴方JWT寄荐躇和荐傭躇*立即寻址方式例题:1) 云即寻址方式(Immediate addressing) MOV AX, 3064H2) 寄存器寻扯方K (Agister addressing) MOV AX, BX以下都是对存储器的寻址3) 直接寻址方K (Direct addressing)MOV AX, 1200H或MOV AX, VALUE或MOV AX, VALUEMOV AX,

7、 ES: VALUE或MOV AX, ES: VALUE4) 寄存器间接寻址方式(Agister indirect addressing );MOV AX, EX或EP或SI或DI5) 寄存器相对寻址方式弹称直接变址寻址方列MOV AX, COUNTBP或BX或SI或DI6) 基址变址寻址BasecC indexed addressing)MOV AX, EX或BP SI或DI addressing) : MOV AX, MASKBX SI7)相对基址变址寻址方式(ative 6ased indeedr 8)比例变址寻址方氐(Scaled indeed addressing)MOV EAX,

8、COUNT ESIM以下只80386及以上 机器9)基址比例变址寻址方武:(Based scaCecf indeed addressing) MOV ECX, EAXEDX*810)想对基址比例变址寻址方査(lative based scaled indexed addressing)MOV EAX, TABLEEBPEDI*4二、)与转移地址有关寻址记牢:程序的地址由CS:IP来表示373.3 80x86的指令系统80x86的指令系统可以分为以下6组小数据传送指令 鸟算术指令逻辑指令申串处理指令*控制转移指令 *处理机控制指令1)適用数据T专送指令MOV (Move)传送*MOVESX (m

9、ove with sign-extend)带符号扩展传送 MOVEZX (move with zero-extend)带零扩展传送 PUSH (Push onto the stack)进栈* POP (Pop from the stack)出栈* PUSHA/PUSHAD(push all registers)所有寄存器 进栈POPA/POPAD(pop all registers)所有寄存器出栈 XCHG (Exchange)交换通用基址变址十CS除外段寄存器立即数M0V指令可行4生图MOV指 令不影 响标志 位MOV指令是双操作数指令:必须类型匹配。1、目 的操作数不允许立即数方式,2、不

10、允许用CS寄存器和IP寄存器为 目 的3、不允许用MOV指令在两个存储器单元间直接传送4、不允许两个段寄存器之间直接传送数据,5、不允许对段寄存器送立即数6、双操作数除源操作数可为 立即数夕卜,必须有一个操作数在寄存器中。(P58)25地址传送指令LEA AX,STRING1 MOV AX,OFFSET STRING126二、算术指令1、加法指令ADD (add)加法ADC (add with carry)带进位加法 :INC (increment)加1 *INC 指令不影响CF标志,其余都影响条件标 志位。溢出位OF是用来表示带符号数的溢出,CF 位是表示无苻号数的溢出O2、减法指令 SUB

11、 (subtract)减法 SUB DST, SRC; DST=DST-SRCSBB (subtract with borrow)带借位减法SBB DST, SRC; DST二DST-SRC-CF减法指令影响 所有标志位。CF:借位标志,若减数被减数,有借位贝!J CF二1, 否贝!JCF二0 ; 用二进制加法运算时,用最离有效位向离位的进位来判别 :有进位时CF二1,无进位时CF=O。OF:若两个数的符号相同,OF二0;若两个数的符号相反,而结果的符号与减数相同则0F二1,除上述1*况外0F二0。SF:是结果的最3T位;ZF:结果为0则ZF二AF:半字节的借位;PF:结果中1的个数为偶 则P

12、F二1。DEC ( Decrement) Ml DEC OPR ;(OPR)(OPR)-1NEG ( Negate )求补NEG OPR ; (OPR) jOFFFFH-(OPR)+1:CMP ( Compare )比较CMP OPR1 , OPR2 ; (OPR1)-(OPR2) 以上三条指令:*DEC不影响CF,*CMP指令不保存结果,其余都根据结果(与减法同)设置条件标志 位。3、乘法指令 MUL (Unsigned Multiple)无符号数乘法 MUL SRC IMUL (Signed Multiple)带符号数乘法 IMUL SRC指令中SRC为REG或MEM,另一个操作数是默认的

13、: 字运算为AX, 字节运算为AL ;两个字相乘得到的32位乘积,默认存放在DX, AX中, DX存放高位字,AX存放低位字。两个字节相乘得到的16位乘积,默认存放在AX中,AH存放高位字节,AL存放低位字节MUL和IMUL指令只对OF和CF标志有影响,高字或高字 节为0 ,则OF=0 , CF=0否则为4。4、除法指令DIV (Unsigned divide)无苻号数除法 IDIV (Signed divide)带符号数除法 格式:DIV SRC;SRC为 REG 或 MEMIDIV SRC;分字节除和字除操作:字节:(AX) / (SRC) k AL;商(AX)% (SRC) AH;余字:

14、商:AX .(DX, AX) / (SRC)余:DX OPR:是除立即数以外的任何寻址方式A移位次数由CNT决定,CNT可以是1或CL (次数(1)逻辑左移SHL (例:1100 1011)CFOPR0移位指令根据结果设置SF,ZF(4)算术右移SAR(例:1100 1011)PF和CF。OF 只在CNT=1时 才有效:最高位发生变化置1OPR0CFAF不影响。*串处理指令传递4 MOVS(Move string)CMPS(Compare string)串比较串扫描SCAS(Scan string) r LODS(Load from string)从串取STOS(Store in to str

15、ing)存入串 与上述基本指令配合使用的前缀廉: 鸟REP (Repeat)重复REPE/REPZ(Repeat while equal/zero)相等/为零则重复REPNE/REPNZ(Repeat wh订e not equal/not zero) 不相等/不为零则重复36MOVS与REP相配合工作:准备工作:1)源串:数据段中,首地址放入si寄存器2)目的串:必须在附加段中,首地址放入DI寄存器3)数据串长度:CX寄存器中4)建立方向标志。DF = 0从段首开始传送DF = 1从段尾开始传送举例:数据定义如下:DATA SEGMENTSTRING DB SPACE EXPLORERS IN

16、CPRUNE DB 20 DUP C )DATA ENDS;将串STRING中字符从左到右传送到PRUNE中。MOV AX , DATAMOV DS , AXMOV ES , AXLEA SI , STRINGMOV DI , OFFSET PRUNE;MOV CX , PRUNE STRING;CLDREP MOVSB59例:将大小为40个字节的缓冲区BUF清为空设计如下:DATA SEGMENTBUF DB 40 DUP ( ?)DATA ENDSCODE SEGMENTMOV AX , DATAMOV ES , AXLEA DI , BUFMOV CX , 40CLDMOV AL , 2

17、0HREP STOSB40CODE ENDS条件转移指令单条件,测试某次运算结果(P88)A、ZF,O或相等:JZ(JE)、JNZ(JNE)B、SF,符号:JS、JNSC、OF,溢出:JO、JNOD、PF,奇偶位:JP、JNPE、CF,进位:JB(v)、JNAE(=)或JCJNB()、JAE或JNC(2)根据无符号数比较结果进行转移(P89)A、JB(v)、JNAE(”)或JCJNB(*)、JAE(2)或JNCB、CFVZF=1: JBE(S)、JNA(C、CFVZF=O: JNBE(=)、JA()65(3)根据有符号数比较结果进行转移(P89)A、SFAOF=1: JL(v)、JNGE(=)

18、B、SFAOF=0: JNL()、JGE()C、(SFAOF)VZF=1: JLE(S)、JNG(D、(SFAOF)VZF=0: JNLE(=)、JG()4)测试饷勺值为0则特移指令 JCXZ CX 寄存器的内 容为零则转移 格式:JCXZ OPR测试条件:(CX) =0循环指令一重复操作(短转移)LOOP循环指令 格式:LOOP OPR; OPR为目的地址测试条件:(CX)丰。LOOPZ / LOOPE当为零(相等)时,执行循环格式:LOOPZ (或LOOPE) OPR测试条件:ZF=1且(CX)北0LOOPNZ / LOOPNE当不为零(不相等),执行循 环格式:LOOPNZ (或LOOP

19、NE) OPR 测试条件:ZF=0且(CX)主0这三条指令的执行步骤是:1 ) ( CX )( CX ) 12)检查是否满足测试条件,如满足则转目的地址幼例:存储区中有L个字符的字符串,首址为ASC_STR ,要 求在串中查找空格,找到则继续执行,末莪到则转到 NOT _FOUND 去执行。MOVMOVMOVNEXT : INCCMPCX , LBX , -1AL ,BXAL , ASC _ STRBXLOOPNEJNE NOT_FOUNDNOT_FOUND:子程序(寻址方式同JMP) CALL调用指令:RET返回指令77中断指令jINT n*操作:SP-SP2;(SP+1, SP)PSW;S

20、P-SP2;(SP+1, SP)CS;SP-SP2;(SP+1? SP) *IP;IP (n*4) ; CS (n*4+2)j INTOIRET(IRETD32 位)操作:IP (SP+l, SP) ; SP SP+2; CS (SP+1, SP) ? SP SP+2; PSW (SP+1, SP) ; SPSP+2336处理机控制指令3.3.6.1标志处理指令 CMC; CF求反指令(Complement carry ) /CF:* CLC; CF置0指令 (Clear carry ) CF = 0 STC; CF置 1 指令 (Set carry) CF =1 CLD;变址加方向指令(Cl

21、ear direction) DF= 0 STD;变址减方向指令(Set direction) DF = 1 CLI;关中断指令(Clear interrupt) IF = 0 STI;开中断指令(Set interrupt) IF= 1第四茅汇编方肯恳序启式在计算机上运行匸编语宜程序的步骤是:1 )用编辑程序建立源文件;filename. ASM2)用MASM程序把ASM文件转换成OBJ文件;3)用LINK程序把OBJ文件转换成EXE文件;4)经DEBUG的调试5)用DOS命令直接键入文件名就可以执行该程序o格式:变量名Mnemonic Oprand,Oprand;Commen 操作数(Op

22、rand)把数据放入指定的单元助记爸(Mnemonic)字段说阴所用倒操乍的数据类熨,帚用的有叹下几种:DB:字节(8位)DW:字(16位)DD:双字(32位)DQ:个字(64位),存放双精度浮点数DT:十个字节,形成压缩的BCD码。DW和DD可存储偏移地址或完整的地址。下面举例说明:例:操作数可以是常数,或者 表达式(根据表达式可以求得一 个常数),如DATA_BYTE DATA_WORD DATA_DWDBDWDD1O3451 OH100,100H5-53*20,0FFFDH0A041 06400000 1FBFF3C000000FDFF0000100d100h-5,60d,0FFFDh1

23、0d410h3匚编程序在3匚编期间在存储器中 存入数据,如图所示例:操作数也可以是字符串,如:MESSAGE DB HELLO例:DATA DW ABTCD注意:仁不能写为 DW ABCD2、用DB与DW来定义字符串的区别例:操作数?可以保留存储空间,但不存入数据。如:ABC DB 0, ?,?,?, 0DFF DW ? , 52, ?操作数可以使用复制操作符来复制某个操作数。其格式为:repeat_count DUP(operand,operand)repeat_count:可以是一个表达式,它的值应该是一个正盛数,用来指定括号中的操作数的重复次数。例:ARRAY1 DB 100 DUP (

24、 ?)例:DUP操作可以嵌套,ARRAY3 DB 100 DUP ( 0,2 DUP(1,2),0,3 )可以用DW或DD伪操作把变養或标号的偏移地址 (DW)或垂个地址(DD)存入存储器。用DD操作存入地址时:第一 字为偏移地址,第二个字为段地址。PARAMETER_TABLE DWPAR1DWPAR2DWPAR3INTERSEG_DATADDDATA1DDDATA2则汇编后的存储4青况如图所示 (点击出现)PARAMETER_TABLEINTERSEG DATA PAR1的偏移地址PAR2的偏移地址PAR3的偏移地址DATA1的偏移地址DATA1的段地址 DATA2的偏移地址 DATA2的

25、段地址例的汇编结果83表达式赋值伪操作EQU程序中多次出现同一个表达式,为方便,可以用 赋值伪操作给表达式赋予一个名字。格式如下:Expression_name EQU Expression表达式:有效的常数表达式,有效的助记符举例如下:CONSTANT EQUDATAEQUALPHAEQUBETAEQUADDREQUBEQUP8EQU256HEIGHT+12;地址表达式7ALPHA-2VAR+BETABP+8DS: BP+857段定义伪操作(程序格式)段定义伪操作的格式如下: segment name SEGMENTsegment name ENDS95方法坯Main proc farPUSH DSMOV AX, 0PUSH AX返回DOS水方法2 :Main proc farMOV AH ,4CHRETINT 21HMain endpMain

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论