鱼C论坛

 找回密码
 立即注册
查看: 2825|回复: 5

关于计算机对ASCII码存储和使用的一个问题

[复制链接]
发表于 2018-3-3 07:15:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在看汇编的视频时偶然想到的,或许是由于基础知识太少,此问题思考许久,不得答案。在网上查,却也不知应该怎么搜索。也未搜索到相关的资料。
特此请教大家。

下面入正题:
书上讲任何字符在计算机中都有个编码,用以存储数据。(这里就具体到ASCII码来讲)。

当我们让电脑(以8位机为例)计算1+1时,
它是计算的0000 0001+0000 0001呢,
还是计算的ASCII中的00110001+00110001呢?
因为我们输入的操作数1,对于用ASCII存储的电脑来说,不是00110001吗?
所以我一直搞不懂,它真正操作的是哪个数。

真诚请教,非常感谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-3 08:14:24 | 显示全部楼层
按照你的理解,计算的应该是 0000 0001+0000 0001
请看下面的程序

输入 2 空格 3
GIF.gif

  1. assume cs:code, ds:data, ss:stack

  2. stack segment
  3.         db 100h dup (0)
  4. stack_top:
  5. stack ends

  6. data segment
  7. num0        db 0
  8. num1        db 0

  9. data ends

  10. code segment
  11. start:
  12.         mov        ax, stack
  13.         mov        ss, ax
  14.         mov        sp, stack_top
  15.         mov        ax, data
  16.         mov        ds, ax
  17.         mov        ax, 0b800h
  18.         mov        es, ax
  19.        
  20.         mov        ah, 01h
  21.         int        21h                        ; 键盘中断,读取一个字符
  22.         sub        al, '0'                        ; 从键盘读取到的是字符,字符减 ‘0’,也就是减 30h,转换成数字
  23.         mov        byte ptr [num0], al        ; 被加数
  24.        
  25.         mov        ah, 01h
  26.         int        21h                        ; 键盘中断,读取一个字符(空格),直接忽略
  27.        
  28.         mov        ah, 01h
  29.         int        21h                        ; 键盘中断,读取一个字符
  30.         sub        al, '0'                        ; 从键盘读取到的是字符,字符减 ‘0’,也就是减 30h,转换成数字
  31.         mov        byte ptr [num1], al        ; 加数
  32.        
  33.         mov        al, byte ptr [num0]
  34.         add        al, byte ptr [num1]        ; 被加数 + 加数,现在 ax 中是两个数的和
  35.        
  36.         add        al, '0'                        ; 把这个和加 ‘0’,也就是加 30h,转换成字符,用于下面显示
  37.         mov        ah, 07h                        ; 字符属性
  38.         mov        es:[160 * 10], ax
  39.        
  40.        
  41.         mov        ax, 4c00h
  42.         int        21h
  43. code ends
  44. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-3 08:19:04 | 显示全部楼层
注释部分好不整齐 ^_^
无标题1.png

我的代码长这样,复制过来就成上面那样了
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2018-3-3 20:14:39 | 显示全部楼层
人造人 发表于 2018-3-3 08:19
注释部分好不整齐 ^_^

谢谢,能看懂您的意思。之前一直疑惑了很久,猜测会做这样的减法处理,但是只能胡乱猜,远不如您这个图来得肯定。
非常感谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-4 00:45:44 | 显示全部楼层
nonepeople 发表于 2018-3-3 20:14
谢谢,能看懂您的意思。之前一直疑惑了很久,猜测会做这样的减法处理,但是只能胡乱猜,远不如您这个图来 ...

^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-4 02:36:02 | 显示全部楼层
nonepeople 发表于 2018-3-3 20:14
谢谢,能看懂您的意思。之前一直疑惑了很久,猜测会做这样的减法处理,但是只能胡乱猜,远不如您这个图来 ...

无标题1.png
注释忘记改了,应该是  ; 被加数 + 加数,现在 al 中是两个数的和

希望没有造成误解
^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 16:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表