zoukankan      html  css  js  c++  java
  • 汇编求两个数的和(一)

    入门篇

    1.代码:

    DATA SEGMENT
            D1 DB 12H
            D2 DB 23H
            RESAULT DB 2 DUP(0),'$'
    DATA ENDS

    CODE SEGMENT
            ASSUME CS:CODE,DS:DATA
    START:
            MOV AX,DATA
            MOV DS,AX
            MOV AX,0
            MOV AL,D1
            ADD AL,D2
            MOV RESAULT,AL
            LEA BX,RESAULT
            MOV DX,BX
            MOV AH,9
            INT 21H
            MOV AH,4CH
            INT 21H
    CODE ENDS
            END START

    需要说明的是,该结果并非 12H+23H 的十六进制值,而是(12H+23H)对应的ASCALL值(改进算法在以后的几篇中提到)

    2.分析

    这是初始化段的操作,可以看出,DS段的偏移地址为076A

    然后把12H和23H的相加结果保存到RESAULT变量中,可以看出RESAULT的物理地址为DS:0002

    紧接着,我们把RESAULT的偏移地址赋值给DX中,这样,我们就可以用DOS系统的9号功能显示出它的结果来了,但是,需要注意的是它显示出来的是ASCLL值为35H对应的字符,请看下图

    本文章这个方法并非是真正算两数相加的算法,而是让读者明白上诉问题的原因是什么,具体算法再后续篇章中会一一提出。

  • 相关阅读:
    Python通过多线程实现 `异步`
    Linux(六) 处理用户输入
    Linux(五) 更多结构化命令
    Linux(四) 使用结构化命令
    Linux(三) 科学计算
    Linux(二) Shell脚本
    python 登陆接口
    学习的小建议
    干货
    ThinkPhp5 自定义异常处理类
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700591.html
Copyright © 2011-2022 走看看