shuiyu 发表于 2017-6-23 20:25:12

《零基础入门学习汇编语言》第七讲与检测点2.1

本帖最后由 shuiyu 于 2017-12-8 11:56 编辑

小白刚学,不对的请各位大佬指正,谢谢{:10_254:}


一、
(1)字在寄存器中的存储:一个字可以存在一个16位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位
寄存器中。
(2)关于数制的讨论:后面跟着H的为十六进制,后面跟着B的为二进制。一个字等于两个字节,一个十六进制为一个字节(计算就用计算器
就行了{:10_279:} )
(3)几条汇编指令:汇编指令不区分大小写!!
        mov 差不多就是赋值的意思,把后面的熟赋值给前面的。
        add相当于加法,两个数相加,然后赋值到前面那个变量上
        如果两个字相加,超过了一个字的容量,最前面的超出的部分会丢失。
        这里的丢失,指的是进位制不能在 8 位寄存器中保存,但是 CPU 不是并真的不丢弃 这个进位值,这个问题会在后面的课程中讨论。

二、检测点2.1
(1) 写出每条汇编指令执行后相关寄存器中的值。

mov ax,62627           AX=F4A3H   解:先是十进制转化成十六进制就可以得到答案了


mov ah,31H           AX=31A3H解:化成二进制,把前面的AX也换为二进制,因为这个是高位寄存器,所以把AX的前八位换成现在的,然后
                                                           再转化为十六进制就是答案了。

mov al,23H                   AX=3123H解:与上题同理,只是换低位寄存器。

add ax,ax                      AX=6246H解:加法,就不用多说了吧

mov bx,826CH           BX=826CH解:简单的赋值

mov cx,ax                      CX=6246H解:简单的赋值

mov ax,bx                      AX=826CH解:简单的赋值

add ax,bx                      AX=04D8H解:相加的到104D8,超出容量了,所以前面的1丢失,变成04D8.


mov al,bh                      AX=0482H解:ax为:0000 0100 1101 1000bx为:1000 0010 0110 1100 把bx的高位赋值给ax的低位,再转化为十六进制


mov ah,bl                      AX=6C82H解:ax为:0000 0100 1000 0010 bx为:1000 0010 0110 1100 把bx的低位赋值给ax的高位,再转化为十六进制


add ah,ah                      AX=D882H解:ax为:0110 1100 1000 0010 高位相加,即0110 1100+0110 1100=1101 1000,然后填上低位的八位


add al,6                       AX=D888H解:低位加6

add al,al                   AX=D810H解:ax为:1101 1000 1000 1000 低位相加,即1000 1000+1000 1000=1 0001 0000,超出容量了,所以前面的
                                                          1丢失了,即低位相加得0001 0000;加上高位的八位得到答案


mov ax,cx                      AX=6246H解:简单的赋值,前面得CX=6246H

(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
        movax,2         AX=2

        addax,ax      AX=4

        addax,ax      AX=8

        addax,ax      AX=16



谢谢小甲鱼带来的视频教程,感谢!! {:10_303:}


   
本节结束,多谢览阅!
小白刚学,不对的请各位大佬指正,谢谢{:10_254:}

h1056599884 发表于 2017-12-7 22:56:37

为什么我最后两个低位相加得出数是10A啊

shuiyu 发表于 2017-12-8 12:01:15

h1056599884 发表于 2017-12-7 22:56
为什么我最后两个低位相加得出数是10A啊

你好,我刚刚从头开始计算了一遍(用计算器{:10_312:}),发现我是没写错的{:10_277:}。我重新编辑了一下解答过程,你再认真的对照一下看看是哪里出问题了。。。

h1056599884 发表于 2017-12-8 13:05:16

我计算器按错了 我已经算出来了,谢谢你的解答

shuiyu 发表于 2017-12-8 16:38:56

h1056599884 发表于 2017-12-8 13:05
我计算器按错了 我已经算出来了,谢谢你的解答

哈哈,客气了。一起加油{:5_106:}
页: [1]
查看完整版本: 《零基础入门学习汇编语言》第七讲与检测点2.1