zoukankan      html  css  js  c++  java
  • 汇编学习笔记(3)[bx]和loop

    本文是《汇编语言》一书的学习笔记,对应书中的4-6章。

    汇编程序的执行

    要想将源代码变为可执行的程序需经过编译、连接两个步骤,WIN7操作系统下需要MASM程序来进行编译连接工作。将MASM和Debug安装在E:Softwareassembly目录下并新建code文件夹,创建汇编源程序1.asm,使用masm命令编译,link命令连接。

     1 ;演示的小程序
     2 
     3 assume cs:code
     4 code segment
     5     
     6     mov ax,1
     7     mov bx,2
     8     add ax,bx
     9     sub bx,1
    10 
    11     mov ax,4c00h
    12     int 21h
    13 
    14 code ends
    15 
    16 end

    执行link命令后assembly目录下生成1.exe和1.obj两个文件,1.obj为编译过程中的目标文件,1.exe即可执行的二进制文件。1.obj中存储着远程需的描述信息,程序的大小、占用多少空间,当然还有翻译成机器码的源程序代码。

    生成1.exe可执行文件后,用debug命令跟踪调试程序。

    r命令查看寄存器信息,u命令查看内存中的程序代码。使用Debug加载程序后,ds存储程序开始的段地址,cs指向第一行代码。在ds和cs之间有一段大小为256字节的空间,称为程序段前缀,所以ds-cs=10H。

    [bx]

    [bx]表示将bx中的值(bx)作为偏移地址来表示一个内存单元,段地址在ds中,也可以显示的指定段地址即ds:[bx]。

    loop

    loop是循环指令,循环执行从标号开始的内容,下面是计算2^5的代码。

     1 ;演示2^5的小程序
     2 
     3 assume cs:code
     4 
     5 code segment
     6     
     7     mov ax,2
     8     mov cx,4
     9 s:  add ax,2
    10     loop s
    11 
    12     mov ax,4c00h
    13     int 21h
    14 
    15 code ends
    16 
    17 end

    cx中存储的是循环次数,s是标号,执行到loop s会先将cx-1判断cx是否=0,若不等于0则执行s处代码。

  • 相关阅读:
    C语言第五次作业
    c语言第4次作业
    第12次作业
    C语言第9次作业
    C语言第8次作业2
    C语言第8次作业
    C语言第七次作业---要死了----
    C语言第七次作业
    物联网工程实践第二次作业
    物联网工程实践第一次作业
  • 原文地址:https://www.cnblogs.com/michaelle/p/4023313.html
Copyright © 2011-2022 走看看