nonepeople 发表于 2018-3-3 07:15:14

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

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

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

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

真诚请教,非常感谢。

人造人 发表于 2018-3-3 08:14:24

按照你的理解,计算的应该是 0000 0001+0000 0001
请看下面的程序

输入 2 空格 3


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

stack segment
        db 100h dup (0)
stack_top:
stack ends

data segment
num0        db 0
num1        db 0

data ends

code segment
start:
        mov        ax, stack
        mov        ss, ax
        mov        sp, stack_top
        mov        ax, data
        mov        ds, ax
        mov        ax, 0b800h
        mov        es, ax
       
        mov        ah, 01h
        int        21h                        ; 键盘中断,读取一个字符
        sub        al, '0'                        ; 从键盘读取到的是字符,字符减 ‘0’,也就是减 30h,转换成数字
        mov        byte ptr , al        ; 被加数
       
        mov        ah, 01h
        int        21h                        ; 键盘中断,读取一个字符(空格),直接忽略
       
        mov        ah, 01h
        int        21h                        ; 键盘中断,读取一个字符
        sub        al, '0'                        ; 从键盘读取到的是字符,字符减 ‘0’,也就是减 30h,转换成数字
        mov        byte ptr , al        ; 加数
       
        mov        al, byte ptr
        add        al, byte ptr         ; 被加数 + 加数,现在 ax 中是两个数的和
       
        add        al, '0'                        ; 把这个和加 ‘0’,也就是加 30h,转换成字符,用于下面显示
        mov        ah, 07h                        ; 字符属性
        mov        es:, ax
       
       
        mov        ax, 4c00h
        int        21h
code ends
end start

人造人 发表于 2018-3-3 08:19:04

注释部分好不整齐 ^_^


我的代码长这样,复制过来就成上面那样了
^_^

nonepeople 发表于 2018-3-3 20:14:39

人造人 发表于 2018-3-3 08:19
注释部分好不整齐 ^_^




谢谢,能看懂您的意思。之前一直疑惑了很久,猜测会做这样的减法处理,但是只能胡乱猜,远不如您这个图来得肯定。
非常感谢。

人造人 发表于 2018-3-4 00:45:44

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

^_^

人造人 发表于 2018-3-4 02:36:02

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


注释忘记改了,应该是; 被加数 + 加数,现在 al 中是两个数的和

希望没有造成误解
^_^
页: [1]
查看完整版本: 关于计算机对ASCII码存储和使用的一个问题