zoukankan      html  css  js  c++  java
  • 汇编(一)续

    1.上篇文章写了一个hello world程序,这篇文章,我们来详细分析它的执行过程。

    代码如下:

    DATAS  SEGMENT
         STRING  DB  'Hello World!',13,10,'$'
    DATAS  ENDS

    CODES  SEGMENT
         ASSUME    CS:CODES,DS:DATAS

    START:
         MOV  AX,DATAS
         MOV  DS,AX
         LEA  DX,STRING
         MOV  AH,9
         INT  21H
         MOV  AH,4CH
         INT  21H

    CODES  ENDS
        END   START


    2.首先看

    mov ax,datas

    mov ds,ax

    这句代码的意思是把数据段(data)的段基址赋值给ds

    因为立即数不能直接赋值给段寄存器DS所以需要中间寄存器

    我们可以查看寄存器AX的变化

    这是执行代码前

    执行代码后

    可以看出数据段的段基址变成了076AH

    接着看下一句指令

    lea dx,string

    的执行结果

    因为string的偏移地址为0000H所以,DX的值还为0000H

    3.

    MOV  AH,9的意义为

    调用DOS功能,该功能为显示DS:DX地址处的字符

    MOV AH,4CH的意义为

    结束程序,将控制权交操作系统

  • 相关阅读:
    C语言调试示例
    Tiff格式详解(转载)
    指纹
    twitter
    baidu
    NoSuchMethodError随记
    IllegalArgumentException异常
    Springboot2.2.9接入阿里云ES(带高亮查询)
    阿里云ECS安装cnpm
    阿里云ECS安装docker
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700593.html
Copyright © 2011-2022 走看看