zoukankan      html  css  js  c++  java
  • 汇编语言——王爽(01)

    8086 CPU 有20位地址总线,CPU 一次只能传输16位

     地址加法器采用 ------物理地址 = 段地址 * 16 + 偏移地址

     

     

     DS

    读取 10000H单元中的内容:

                mov bx,1000h  //

                mov ds,bx  //    错误示范 mov ds,1000H,8086CPU不支持直接将数据输入到段 寄存器中

                mov al,[0]  // [.....]中的 0  标示内存单元的偏移地址

                      // 8086 CPU 自动取 ds 中的数据为内存单元的段地址

    写入数据到10000H:

                mov bx,1000H

                mov ds,bx

                mov [0],al

    mov 、add、sub指令

    mov 指令有以下几种形式

    1. mov  寄存器,数据
    2. mov 寄存器,寄存器
    3. mov 寄存器,内存单元
    4. mov 内存单元,寄存器/段寄存器
    5. mov 段寄存器,寄存器/内存单元
    6. mov    寄存器,段寄存器

    add sub,缺少对段寄存器的操作

    栈是一种具有特殊的访问方式的存储空间,---------最后进入的数据最先出去。LIFO (Last in frist out)

    PUSH(入栈)以字为单位进行

    POP(出栈)

    SS 段寄存器------------栈顶的段地址

    和SP寄存器------------偏移地址==================SS:SP指向栈顶元素

    •  将 10000H—1000FH 这段空间当作栈,初始状态栈是空的
    • 设置 AX = 001AH,BX = 001BH
    • 将 AX,BX 中的数据入栈
    • 然后将 AX,BX清零
    • 从栈中恢复 AX,BX原来的内容

          mov ax,1000h

          mov ss,ax

          mov sp,0010h  //栈底

          mov ax,001ah

          mov bx,001bh

          push ax  // 入栈指令 SP-2

          push bx

          sub ax,ax

          sub bx,bx

          pop bx

          pop ax  // 出栈指令 SP+2

    编写第一个程序

    assume cs:codesg
    codesg segment
    start :mov ax,0123h
    mov bx,0456h
    add ax,bx
    add ax,ax

    mov ax,4c00h
    int 21h
    codesg ends
    end

    dosbox 使用方法:见网页--------->>>>>https://www.jb51.net/softs/709793.html

    程序的调试方法:debug   +  r  

     CX:表示程序的长度

    .DOS系统中.EXE文件中的程序加载过程:

     DS:表示PSP的段地址 SA,,PSP占256字节------------------>>>> 程序的物理地址为 SA*16+256 = (SA+16)*16+0

    U 命令显示机器码及其对应的地址

  • 相关阅读:
    rstudio命令行操作
    HTTP缓存机制
    F5和Ctrl F5
    g++与gcc区别
    C++中long long和long
    拉链法哈希表实现
    tcp中的带外数据
    LSGAN
    随机森林分类器学习
    python中cls关键字
  • 原文地址:https://www.cnblogs.com/xwtstudio/p/12490201.html
Copyright © 2011-2022 走看看