汇编(一)续

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的意义为

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

posted @ 2018-12-20 18:31  IT蓝月  阅读(100)  评论(0编辑  收藏  举报
Live2D