zoukankan      html  css  js  c++  java
  • 高斯数学

    伟大的数学家高斯在9岁那年,用很短的时间完成了从1到100的累加。那原本是老师给学生们出的难题,希望他们能老老实实地待在教室里。
    高斯的方法很简单,他发现这是50个101的求和:100+1、99+2、98+3、…、50+51,于是他很快算出结果是101×50=5050。


    从1加到100,高斯发现了其中的规律,当然很快就能算出结果。但是计算机很蠢,它不懂什么规律,只能从1老老实实地加到100。
    不过,它的强项就是速度,而且不怕麻烦,当高斯还在审题的时候,它就累加出结果了。



    jmp near mycode

    mydata:
    db  '1+2+3+4+5...+100='

    length:
    db  0


    mycode:
    mov ax,0x07c0
    mov ds,ax ;初始化数据段寄存器

    mov ax,0xb800
    mov es,ax ;初始化显存段寄存器


    xor ax,ax;  把ax清0
    mov cx,1 ; 

    calc:
    add ax,cx
    inc cx
    cmp cx,100
    jbe calc


    ;5050 / 10 = 505   余数为0
    ;505  / 10 = 50    余数为5
    ;50   / 10 = 5     余数为0
    ;5    / 10 = 0     余数为5

    ;

    mov bx,0x0000
    mov ss,bx  ;初始化堆栈
    mov sp,0x1234

    mov si,10  ;初始化被除数

    convert:
    xor dx,dx  ;初始化除数
    div si
    push dx
    inc byte[length]
    cmp ax,0
    jne convert

    ;movsb byte ptr [ES:DI],byte ptr [DS:SI]
    mov di,0
    mov si,mydata
    mov cx,length-mydata


    print1:
    movsb
    mov byte [es:di],0x7
    inc di
    loop print1

    xor cx,cx
    mov cl,byte [length]

    print2:
    pop ax
    add ax,0x30
    mov  [es:di],al
    inc di
    mov byte [es:di],0x7
    inc di
    loop print2


    stop: jmp near stop
    times 510-($-$$) db 0
    dw 0xAA55

  • 相关阅读:
    C# 接口
    C# 多态
    C# 继承
    C# 封装
    动态规划:从新手到专家
    hduoj题目分类
    4.2 最邻近规则分类(K-Nearest Neighbor)KNN算法应用
    警惕自增的陷阱(++)
    五大常用算法之四:回溯法
    算法java实现--回溯法--图的m着色问题
  • 原文地址:https://www.cnblogs.com/xiaodaxiaonao/p/7279364.html
Copyright © 2011-2022 走看看