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 标号

  • 相关阅读:
    (转)$.extend()方法和(function($){...})(jQuery)详解
    (转)JSONObject与JSONArray的使用
    (转)java中对集合对象list的几种循环访问总结
    ibatis 参数和结果的映射处理
    Could not calculate build plan
    maven项目工程报错:cannot be resolved to a type
    CronTrigger中cron表达式使用
    ex:0602-169 遇到不完整或无效的多字节字符,转换失败
    UseParNewGC和UseParallelGC的区别
    java gc日志详解
  • 原文地址:https://www.cnblogs.com/thaughtZhao/p/4182211.html
Copyright © 2011-2022 走看看