trance110 发表于 2011-10-11 02:03:03

老DJ学汇编-第二章-第二课(作业)

2.2“字”(WORD)在寄存器中的储存一个字可以存在一个16为寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8为寄存器和底8位寄存器中。 由于一个内存单元可以存放8位数据,CPU中的寄存器有可以存放N个8位数据。也就是说,计算机中的数据大多是由1~N个8为数据构成的。 用16位进制来表示数据可以直观的看出这个数据是由哪些8位数据构成的。每两位对应一个八进制。 2.3几条汇编指令 (汇编指令不区分大小写)示意图如下:(图一)http://bbs.fishc.com/data/attachment/album/201110/11/015733af4qrnqys4nrlqj4.jpg以上汇编指令的个人理解如下: MOV    AX,      18                     AX=18(移动) (寄存器)(数值) 注:   移动-数值-置-寄存器。
CPU执行下表中的程序段的每条指令后,对寄存器中的数据进行的改变。思考题 (一) 如图二。(图二)http://bbs.fishc.com/data/attachment/album/201110/11/015735x7sggcgddk44t0dn.jpg 答案:以十六进制计算 AX+BX=044C注:8226+8226=1044C 实际应得 044C(去掉最高位) 思考题二:如图三(图三)http://bbs.fishc.com/data/attachment/album/201110/11/0157376j639dcn6djlcozz.jpg 这里的丢失,指的是进位制不能再8位寄存器中保存,但是CPU不是真的丢弃这个进位值。(期待后面的后面的+后面的讨论) 检测点 2.1请写出每条汇编指令执行后相关寄存器中的值。
MOVAX, 62627AX= F4A3H
MOVAH, 31HAX=31A3H????
MOVAL, 23HAX=3123H
ADDAX, AXAX= 6246H
MOVBX, 826CHBX=826CH
MOVCX, AXCX=6246H
MOVAX, BXAX=826CH
ADDAX, BXAX=04D8H
MOVAL, BHAX=0482H
MOVAH, BLAX=6C82H
ADDAH, AHAX=D882H
ADDAL, 6AX=D888H
ADDAL, ALAX=D810H
MOVAX, CXAX=6246H

费解:MOVAH, 31H   AX=31A3H如果等于31A3H的话,那么31A3H+3123H就不等于6246H了。如果:AX=3123H的话,那么3123H+3123H就等于6246H了。不知道是我自己理解错误,还是抄写错误了!如果哪位同学知道的话,希望能明示!

wish 发表于 2011-10-11 04:04:53

是31A3没错

wish 发表于 2011-10-11 04:21:04

楼主你提问题也不说明白 害我看了那么久也不知道你要表达什么
AX原值=F4A3
31H移到高位后AX=31A3
23H移到低位后AX=3123
所以AX+AX=6246H
不知道你是不是说这里啊

trance110 发表于 2011-10-11 12:44:01

是这里。但还是不太明白。我继续多听几遍!

gongheng 发表于 2011-10-12 13:30:45

3楼正解!!!你从上到下顺序一条一条读下来就行了,这是程序执行的顺序!!!
页: [1]
查看完整版本: 老DJ学汇编-第二章-第二课(作业)