追逐 发表于 2012-9-9 03:21:45

求解2.1 add,ax,ax

本帖最后由 追逐 于 2012-9-9 03:28 编辑

mov ax,62627         ax=F4A3H
记住,这里的62627是十进制,转换为十六进制后,就是F4A3
mov ah,31h             ax=31A3H
意思,是把31值送入ah中,并覆盖,即31A3H
mov al,23h             ax=3123h
意思,是把23值送入al中,并覆盖,即3123H
add,ax,ax             ax=6246H
意思就是把AX加上AX在送入AX中,和C语言的a+=a;一个意思

不知道是那个AX+AX啊 我用ax=31A3H+3123h=62C6算了几次不知道怎么解答
为什么是AX=3123+3123
难道编程语言是如果要算这句ADD,AX,AX 的话
mov ah,31h
mov al,23h
add,ax,ax
那么是从上一句的算就可以了吗?就是MOV AL,23H    AX=3123
为什么不是
mov ah,31h   AX=31A3
mov al,23h    AX=3123这2个相加呢?求仔细说下原理啊

qq974969638 发表于 2012-9-9 04:10:40

没明白,纯顶纯支持................

(@_@) 发表于 2012-9-9 06:50:14

你走入误区了,当寄存器里的数被改变后,寄存器保留的是最后改变过的值,以前的值被覆盖了,那个AX+AX=3123h+3123h

(@_@) 发表于 2012-9-9 06:52:08

31A3H被3123H覆盖了,AX最终是3123H,AX+AX就相当于寄存器里最后存在的值的2倍

琉魂 发表于 2012-9-9 07:40:55

额你想说什么啊!!!!!!

不化蝶的茧 发表于 2012-9-9 08:09:01

昏迷mov ax,62627         ax=F4A3H
         mov ah,31h             ax=31A3H
         mov al,23h             ax=3123h
你都算出来了 算完这些 AX 是3123因为前面的AX=31A3H 变成了3123H那么下面进行
         add ax,ax                  ax=6246H
    这不很正确吗?

贝壳 发表于 2012-9-9 16:59:24

mov是覆盖,而覆盖的意思就是:前面的数据已经被彻底替换,已经不存在了。
就是这么简单。楼主懂了吗?

kdash 发表于 2012-9-9 17:48:56

前面的程序执行完后植已经变了啊。

s0512 发表于 2012-9-9 18:21:29

楼主你好!
    为什么不是
mov ah,31h   AX=31A3
mov al,23h    AX=3123这2个相加呢?求仔细说下原理啊
AX是16位通用寄存器(累加),一次只能存储一组16位数据(2Byte).所以它不能同时存储31A3 &    3123这两组数据,那执行MOV AL,23H时,就覆盖了原来的'A3',即
AX为:3123,所以,ADD AX,AX 的结果为:6246H
俺也刚学,说的不对请见谅!一起努力哈!谢谢:lol

!!!# 发表于 2012-9-9 22:28:37

有点长,不怎么远看了
页: [1]
查看完整版本: 求解2.1 add,ax,ax