zoukankan      html  css  js  c++  java
  • 汇编入门学习笔记 3+5

    下面是3+5的汇编程序的代码和解释,记录一下,方便自己回顾:

    ;完整段的求3+5的和
    DATAS  SEGMENT
        FIVE  DB    5  ;定义5为字节类型变量,FIVE是变量的名字  类似C中int five=5赋值。
    DATAS  ENDS
    
    STACKS  SEGMENT
          DB  128 DUP (?)
    STACKS  ENDS
    
    CODES  SEGMENT
         ASSUME    CS:CODES,DS:DATAS,SS:STACKS  ;假设每个段寄存器获得段地址的位置,相当于C中的函数声明
    START:
        MOV AX,DATAS ; 将伪段地址放入ax中,datas不是指令,而是伪指令,实际上是一个动态的内存地址.
                     ; 要想运行,必须先其地相放入到ds中,但是内存数不能放入段地址
        MOV DS,AX    
        ;mov ds,ax ;就是将段地址装入段寄存器,最终达到了段地址装入段寄存器的目的!
        ;在80X86中规定,内存数不可以直接装入段寄存器,所以才会有这样的一次中转!
        MOV AL,FIVE  ;将字节变量5存入到寄存器中,也可MOV AL,5
        ADD AL,3   ;将寄存器中的值取出,加上3后放回
        ADD AL,30H  ;需要转化成ASCII码才能进行显示,8对应ASCII码为38H,故加上30H
        MOV DL,AL ;将待输出字符的ASCII码传到DL中去
        MOV AH,2  ;将02命令放入AH中,表示输出DL
        INT 21H   ;DOS系统调用放入AH的命令
        
        MOV AH,4CH ;就是结束本程序,返回 DOS 操作系统。
        INT 21H  ;DOS系统调用放入AH的命令
    CODES  ENDS
        END  START

    另外,附一下关于 INT 21H的讲解:

    http://blog.csdn.net/bill_ming/article/details/7305269

  • 相关阅读:
    C++ 虚函数表解析
    函数调用运算符重载
    成员访问运算符重载
    递增和递减运算符重载
    java 如何查看jdk版本&位数
    oracle 11g完美卸载
    win10 你没有足够的权限执行此操作。
    maven 找不到或无法加载主类
    eclipse 如何对maven项目进行打包?
    Core Dataeasy出现的错误
  • 原文地址:https://www.cnblogs.com/a249189046/p/8074358.html
Copyright © 2011-2022 走看看