汇编语言写一个计算器_手摇机械式计算器的发展历程

17世纪是数学和计算工具大发展的黄金时代,机械计算机的出现是划时代的大事。

1. 帕斯卡加法器和莱布尼茨乘法器

布莱斯·帕斯卡(Blaise Pascal),法国人。16岁那年,他父亲出任诺曼底省的监察官,负责征收税赋,整天忙着计算税率、税款,这促使3岁丧母的帕斯卡想要造一台计算用的机器。3年后的1642年,帕斯卡用齿轮传动原理,造出了一台“加法器”(Pascal' s calculator)),可以做加减法。这是一个半米长、拳头般粗的黄铜材质的方盒子,内部有一系列齿轮,面板上有一列显示数字的小窗口。用一支专用的铁笔,像拨电话号码那样把数字拨进去,再输入另外一个加数,读数窗就会显示出两数之和。他用一种特制的棘轮解决了最难的进位问题。这是世界上第一款不需要知道原理、口诀等就能直接使用的计算工具,虽然只能做加减法,但计算过程不再依赖人的大脑,因此意义重大。

1674年,德国著名哲学家、数学家莱布尼茨(Leibniz)在他28岁这年制造出一个长1米的“乘法器”。因为增加了一个“步进轮”,解决了进位和连续计算的问题,可以进行四则运算。帕斯卡加法器和莱布尼茨乘法器是手摇计算机的雏形。

2. 手摇计算机

手摇计算机面世后一度受到冷遇,1820年法国率先量产后才得到广泛应用。到20世纪70年代,又经过了许多改进,如用按钮代替拨号,输出使用打字纸带等。二战后,它被装上了电动机,从此不再用手来摇。瑞典、德国、法国、英国、意大利、美国、日本等国家都生产过手摇计算机,传世的品牌有奥德涅、布朗斯、凯旋者、安塔列斯、舒伯特、梅利塔、好利获得、安塔雷斯、门罗、瓦尔特、虎牌等。

3. 科塔计算器(Curta)

手摇计算机存在的时间较长,名机辈出,被称为“最小的手摇计算机”的Curta就是其中的佼佼者。Curta是世界上第一台能用单手拿着和计算的机械手摇计算机,它代表西方机械技术的顶峰,被称为“人类文明瑰宝”和“技术奇迹”。它的外形为圆柱,顶部有一个曲柄,高约10厘米,像一个胡椒磨;包括螺钉、轴、齿轮、数字轮、归位环、设定旋钮、37层的“进位鼓”等600个零件,重量仅230克左右。Curta有I和Ⅱ两个型号,I型小些,Ⅱ型稍大,计算结果可以分别精确到11位和15位。

4. 中国的手摇计算机

我国手摇计算机诞生较晚,最早只有一北一南两个厂家。天津市红星工厂模仿日本虎牌于1957年生产了“文化”;上海计算机打印机厂旗下则有“飞鱼”和“通用”。“文化”为中国生产的第一款手摇计算机,而“飞鱼”产量最大。中国最常见的手摇计算机品牌就是文化、飞鱼和通用,称得上我国手摇计算机的三驾马车,“飞鱼”更成为两弹一星的功勋。此外,还有现代、飞轮、飞马、莲花等品牌,但极为罕见。

787275429d6a78c0489fb29c04ec3e0d.png

5. 小型加法器

20世纪初至60年代,手持计算器还没出现,手摇计算机又太笨重。在这个空档,西方国家生产了许多轻便、小型的加法器,便于携带,也可以用于办公。加法器可以连续加减,但一般只有4-7位。20世纪60年代初,计算工具发生了一次革命:计算器来了!

四大家族:

1961年,第一台全电子化的桌面计算器诞生了,是英国的ANITA,但它是个几十斤重的大家伙,而且价格昂贵。伴随着激烈、残酷的竞争,计算器一如既往地朝着小、轻和多功能的方向发展。到20世纪80年代,全世界基本只剩下“四大家族”:日本的卡西欧(Casio)、夏普(SHARP),美国的惠普(HP)、德州仪器(Texas Instruments,TI)。

卡西欧:卡西欧早在1954年就开始研制世界第一款小型电动式计算器,并创造了许多世界第一。Casio MINI计算器于1972年研制成功,是世界第一款个人计算器,真正让计算器走进了寻常百姓家。在此之前,计算器不对个人销售,一般百姓也买不起,而Casio MINI是当时计算器价格的1/3。Casio fx-10,是世界第一款个人函数计算器;Casio fx-7000G,是世界第一部图形计算器,图形计算器的始祖⋯⋯可以说,卡西欧为世界电子技术的发展打下了基础,袖珍计算器为日本成为超级电子大国立下了汗马功劳。

夏普:全球首款全晶体管计算器、世界上最早的现代意义上的电子计算器诞生在夏普;1969年,全球首款大规模集成电路(LSI)计算器SHARPQT-8D也出自夏普。1973年, SHARP EL-805在全球第一次使用了CMOS-LSI,成为第一台手持式液晶显示计算器,而且液晶显示屏(LCD)的电路是玻璃的----夏普第一个敲开了未来显示技术的大门。

惠普:1968年,惠普诞生了世界第一台台式科学计算器。1972年,世界第一台袖珍型科学计算器图HP-35问世了,加减乘除和三角函数、指数函数都可以运算,也是第一个进入太空的便携计算器。它还是一台真正能够放进口袋的计算器,改变了科学家、工程师和学生的工作、学习方式,逼得风头正劲的计算尺退出江湖,被美国电气与电子工程师协会(IEEE)授予“里程碑”称号(全球仅有不到100个)。

德州仪器:1976年,德州仪器的TI-30成为最受美国中学生欢迎的科学计算器,也是当时价格最低的计算器之一。德州绘图计算器从TI-81开始,TI-83是德州第一个支持汇编语言的图形计算器,具有功能图形、极坐标/参数/序列图形模式、统计、三角函数和代数函数等多种功能,以及许多应用程序。

20世纪70年代,是电子计算器快速成长的时期,也是竞争最激烈的时期。日美等国的各大厂商放开手脚,各展其能,产品蜂拥而出,大放异彩,拉开了计算器盛宴的大幕。到了80年代,竟争见分晓,技术和市场成熟了,创造性大大降低,产品整齐划一。从收藏的角度看,已没有多少可观之处。

部分国外在20世纪70年代生产的计算器,造型古朴,形状各异,具有非常鲜明的时代特征,而且大部分可以正常使用。常见的计算器大致可分为四类:算术型计算器、科学型计算器、程序员计算器、统计计算器,也可根据功能分为基础型、函数、金融、可编程和图形计算器。当然也有其他的分类方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的计算器汇编代码,它可以进行加、减、乘、除四种基本运算: ``` section .data prompt db "Enter an operation (+, -, *, /): ", 0 num1_prompt db "Enter the first number: ", 0 num2_prompt db "Enter the second number: ", 0 result_prompt db "Result: ", 0 error_msg db "Error: division by zero", 0 section .bss num1 resb 2 num2 resb 2 result resb 2 section .text global _start _start: ; print prompt for operation mov eax, 4 mov ebx, 1 mov ecx, prompt mov edx, 30 int 0x80 ; read operation from user input mov eax, 3 mov ebx, 0 mov ecx, num1 mov edx, 2 int 0x80 ; print prompt for first number mov eax, 4 mov ebx, 1 mov ecx, num1_prompt mov edx, 20 int 0x80 ; read first number from user input mov eax, 3 mov ebx, 0 mov ecx, num1 mov edx, 2 int 0x80 ; print prompt for second number mov eax, 4 mov ebx, 1 mov ecx, num2_prompt mov edx, 21 int 0x80 ; read second number from user input mov eax, 3 mov ebx, 0 mov ecx, num2 mov edx, 2 int 0x80 ; convert numbers from ASCII to binary mov al, [num1] sub al, 0x30 mov bl, [num2] sub bl, 0x30 ; perform operation cmp byte [num1], '+' je add_numbers cmp byte [num1], '-' je subtract_numbers cmp byte [num1], '*' je multiply_numbers cmp byte [num1], '/' je divide_numbers ; handle invalid operation mov eax, 4 mov ebx, 1 mov ecx, error_msg mov edx, 21 int 0x80 jmp exit_program add_numbers: add al, bl jmp print_result subtract_numbers: sub al, bl jmp print_result multiply_numbers: mul bl jmp print_result divide_numbers: cmp bl, 0 je division_by_zero div bl jmp print_result division_by_zero: ; handle division by zero mov eax, 4 mov ebx, 1 mov ecx, error_msg mov edx, 21 int 0x80 jmp exit_program print_result: ; convert result from binary to ASCII add al, 0x30 mov [result], al ; print result mov eax, 4 mov ebx, 1 mov ecx, result_prompt mov edx, 8 int 0x80 mov eax, 4 mov ebx, 1 mov ecx, result mov edx, 2 int 0x80 exit_program: ; exit program mov eax, 1 xor ebx, ebx int 0x80 ``` 这段代码使用了 `int 0x80` 作为系统调用来读取用户输入和输出结果。该计算器支持的数字位数为两位,如果需要扩展,需要修改 `.bss` 段和相关代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值