zoukankan      html  css  js  c++  java
  • 一些汇编指令(基于8086)

    回头看了下汇编,简单总结一些备忘,大部分内容在《王爽汇编语言第二版》中有更为详细的介绍,建议下载,比起某些教授抄书出版的内容,王爽先生的文章何止优秀百倍

    mov

    (1)数据送寄存器;

    (2)寄存器送寄存器;

    (3)内存单元送寄存器;

    注意:

    1.内存不能送内存

    2.内存不能送段寄存器;

    例:

    将al中的数据送入内存单元10003H

    分析:默认数据的寄存器是DS,所以只要我们设置ds的值后,使ds*16+[数据索引] = 10003即可。

    程序:

    mov bx,1000H

    mov ds,bx

    mov [3],al

    另一种答案:

    mov bx,FFFH

    mov ds,bx

    mov [13],al

    PUSH(入栈)

    POP (出栈)

    push ax:将寄存器ax中的数据送入栈中;

    pop ax :从栈顶取出数据送入ax。

    8086CPU的入栈和出栈操作都是以字为单位进行的

    jmp short 标号

    (IP)=(IP)+8位位移。

    jmp near ptr 标号

    它实现的是段内近转移。

    指令“jmp near ptr 标号”的功能为:

    (IP)=(IP)+16位位移。

    jmp far ptr 标号

    实现的是段间转移,又称为远转移

    (IP)=(IP)+32位位移。

    mov ax,0123H

    mov ds:[0],ax

    jmp word ptr ds:[0]

    执行后,(IP)=0123H

    mov ax,0123H

    mov [bx],ax

    jmp word ptr [bx]

    执行后,(IP)=0123H

    ret 和retf

    ret

    将栈中数据pop至IP中,具体操作如下:

    (IP)=((ss)*16+(sp))

    (sp)=(sp)+2

    将栈中sp指针处的值放入到IP中,同时栈指针往栈底移动两byte(栈是从高位往地位分配的,所以取出一个数据要增加2)

    retf:(return far)

    (IP)=((ss)*16+(sp))

    (sp)=(sp)+2

    (CS)=((ss)*16+(sp))

    (sp)=(sp)+2

    call指令 (一般和ret配合使用)

    call 标号(将当前的 IP 压栈后,转到标号处执行指令)

    CPU执行此种格式的call指令时,进行如下的操作:

    (sp) = (sp) – 2

    ((ss)*16+(sp)) = (IP)

    (IP) = (IP) + 16位位移

    16位位移=“标号”处的地址-call指令后的第一个字节的地址;

    16位位移的范围为 -32768~32767,用补码表示;

    16位位移由编译程序在编译时算出

    call相当于:

    push IP

    jmp near ptr 标号

    call far ptr 标号:

    (1) (sp) = (sp) – 2

    ((ss) ×16+(sp)) = (CS)

    (sp) = (sp) – 2

    ((ss) ×16+(sp)) = (IP)

    (2) (CS) = 标号所在的段地址

    (IP) = 标号所在的偏移地址

    相当于进行:

    push CS

    push IP

    jmp far ptr 标号

  • 相关阅读:
    iPhone电话与短信相关代码小结
    时间都去哪儿了?开源一个统计iPhone上App运行时间和打开次数的小工具【iOS8已失效】
    分享一个仿网易新闻客户端iPhone版的标签式导航ViewController
    iOS推送小结(证书的生成、客户端的开发、服务端的开发)
    Argy1risMatrix1
    2019河南模考题
    撮箕2020-3-8
    数学符号md
    2014全国甲&2015福建-几何题
    零点
  • 原文地址:https://www.cnblogs.com/thaughtZhao/p/4182211.html
Copyright © 2011-2022 走看看