《零基础入门学习汇编语言》第七讲与检测点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:} 为什么我最后两个低位相加得出数是10A啊 h1056599884 发表于 2017-12-7 22:56
为什么我最后两个低位相加得出数是10A啊
你好,我刚刚从头开始计算了一遍(用计算器{:10_312:}),发现我是没写错的{:10_277:}。我重新编辑了一下解答过程,你再认真的对照一下看看是哪里出问题了。。。 我计算器按错了 我已经算出来了,谢谢你的解答 h1056599884 发表于 2017-12-8 13:05
我计算器按错了 我已经算出来了,谢谢你的解答
哈哈,客气了。一起加油{:5_106:}
页:
[1]