*^_^*努力学习ing……

----------------------------------------Good good study!Day day up!

用户操作
[即时聊天] [发私信] [加为好友]
highID:sunyonggao
16080次访问,排名7963(-1),好友0人,关注者0人。
sunyonggao的文章
原创 15 篇
翻译 0 篇
转载 34 篇
评论 2 篇
high的公告

把自己以前做的笔记整理一下,以后便于学习。希望和大家共同学习,一起进步。

最近评论
adm_qxx:双向链表快速排序,得学习一下
adm_qxx:支持,期待更好的文章。
文章分类
收藏
    相册
    朋友的blog
    老谢的blog
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 汇编语言指令系统收藏

    新一篇: 汇编指令之算术指令 | 旧一篇: mov指令详解

    1.mov在上篇文章中已经介绍

    2.PUSH和PoP指令都必须根据当前SP的内容来确定进栈或出栈的存储单元,而且必须及时修改指针,以保证(SP)指向当前的栈顶。
    (1) 堆栈的存取必须以字为单位,(IBM PC中不允许字节堆栈),所以PUSH和POP指令只能作字操作。
    (2) 它们可以使用初立即数以外的其他寻址方式。
    (3) 指令也可以指定段寄存器作为操作数,注意POP绝对不能使用代码段(CS)寄存器。
    (4) 这两条指令不影响标志位。 

    利用堆栈进行现场保护:
    push AX
    push BX
      .
             .其他要执行的程序
             .
    pop BX
    pop AX
    注意进出栈的顺序。

    3.
    XCHG交换指令
       格式为      XCHG   OPRl,  OPR2
        执行操作:         (OPRl) 〈一一〉 (OPR2)其中OPR表示操作数。该指令的两个操作数中必须有一个在寄存器中,因此,它可以是寄存器之间;寄存器和存储器之间交换信息,注意不能使用段寄存器。指令允许字和字节操作,且不会影响标志位。

    4.累加器专用传送指令
    IN      (input)    输入
    OUT  (output)  输出
    XLAT(Translate)   换码
    这组指令只限于使用累加器AX和AL传送信息。

    注意:
    (1) 所有的I/O端口与CPU之间的通信都由IN和OUT指令来完成。其中IN完成从I/O到CPU的信息传送,而OUT完成从CPU到I/O的信息传送。
    (2) CPU只和累加器(AX或AL)进行接收或发送信息,外部最多可以有64K个端口,端口号为0000H – FFFFH。
    (3) 长格式:对于前256个端口,可以在指令中直接指定,这就是常格式的端口(PORT)。
    (4) 短格式:当端口号大于等于256时,则必须先将端口号置于DX寄存器中,然后再利用IN或OUT进行信息的传递。
    (5) 注意,在利用IN/OUT进行信息传递时,所有的端口号(或DX的内容)均为地址,而传送的均为端口号的内容。
    输入、输出指令不影响标志位。
    例      IN        AX,28H
                  MOV   DATA_WORD , AX
    这两条指令把地口28的内容经过AX传送到存储单元DATA_WORD中。
    例     MOV    DX,3FCH
    IN         AX,DX
    从端口03FCH送一个字到AX寄存器中。
    例         OUT     5,   AL
    从AL寄存器输出一个字节到端口5

    5.XLAT换码指令
    格式为;         XLAT    OPR
                     或    XLAT
    执行的操作:  (AL)  〈一  ((BX)十(AL))
    功能:将一种代码转换为另一种代码。
    在使用这条指令之前,应该先建立一个字节表格,表格的首地址提前存入BX寄存器,需要转换的代码应该是相对于表格首地址的位移量也提前存放在AL寄存器中,表格的内容则是需要转换的代码,该指令执行后就可在AL中得到转换后的代码。
    该指令可以使用XLAT或XLAT   OPR两种格式中的任一种,使用XLAT   OPR时,OPR为表格的首地址(一般为符号地址),但在这里的OPR只是为提高程序的可读性而设置的,指令执行时只使用预先已存入BX中的表格首地址,而并不用汇编格式中指定的值。该指令不影后标志位。
    例       如(BX) = 0040H,(AL)=0FH,(Ds)=F000H
     
    指令                  XLAT
    把   F0000H+0040H+0FH的内容送AL,所以指令执行后:(AL) = 2CH
         即指令把AL中的代码0FH转换为2CH。
    必须注意,由于AL为8位二进制位,所以表格的最大长度不能超过256。

    6.地址传送指令
    LEA   有效地址送寄存器
    LDS   指针送寄存器和DS
    LES   指针送寄存器和ES
    这一组指令完成把地址送到指定寄存器的功能。
    1.LEA   有效地址送寄存器
                 格式:    LEA   REG,SRC
         执行过程:    (REG)<-   SRC
         完成功能:    指令将有效地址送到指定的寄存器中。
    2.LDS   指针送寄存器和DS
        格式:    LDS   REG,SRC
        执行的操作:(REG)〈一(SRC)
                               (DS)〈-   (SRC十2)
    把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中。该指令通常用来指定SI寄存器。
    3.LES   指针送寄存器和ES
        格式:    LES   REG,SRC
        执行的操作:(REG)〈一(SRC)
                               (ES)〈-   (SRC十2)
    把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中。该指令通常用来指定DI寄存器。
    注意:以上三条指令,不能指定段寄存器,指令操作不影响标志位
    本组指令把变量的偏移地址(LEA)或段地址和偏移地址(LDS和LES)送给寄存器,以提供访问变量的工具。
        例 :         LEA    BX,[BX十SI十0F62H]
        如指令执行前 (BX)=0400H,(SI)=003CH
        则指令执行后 (BX)=0400十003C十0F62=139EH
        必须注意,在这里BX寄存器得到的是偏移地址而不是该存储单元的内容。
        例:        LDS   SI,[10H]
        如指令执行前  (DS)=C000H,(C0010H)=0180H,(C0012H)=2000H
        则指令执行后    (S1)=0180H,(DS)=2000H
        例           LES    DI,[BX]
        如指令执行前  (DS)=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH)=4000H
        则指令执行后    (D1)=05AEH,  (ES)=4000H

    7. 标志位寄存器传送指令
    LAHF    标志寄存器的低字节送AH
    SAHF    AH送标志寄存器的低字节
    PUSHF  标志进栈
    POPF     标志出栈
    1.LAHF  标志送AH指令
    格式为:    LAHF
    执行的操作:  (AH)〈- (PSW寄存器的低字节)
    2.SAHF    AH送标志寄存器指令
    格式为:   SAHF
    执行的操作:(PSW的低字节)一〉(AH)
    3.PUSHF   标志进栈指令
    格式为;    PUSHF
    执行的操作:  (SP) 〈-  (SP)-2
    ((SP)+1,(SP))〈-   (PSW)
    4.POPF   标志出栈
    格式为:POPF
    执行过程为:   (PSW)    〈--     ((SP)十1,(SP))
                                         (SP) 〈一  (SP)十2
          这组指令中的LAHF和PUSHF不影响标志位。SAHF相POPF则由装入的值来确定标志位的值

    发表于 @ 2007年05月18日 20:11:00|评论(loading...)|编辑

    新一篇: 汇编指令之算术指令 | 旧一篇: mov指令详解

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © high