(1) 写出每条汇编指令执行后相关寄存器中的值。
参考答案(不一定是标准答案):
mov ax,62627 AX=F4A3H
mov ah,31H AX=31A3H
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
mov al,bh AX=0482H
mov ah,bl AX=6C82H
add ah,ah AX=D882H
add al,6 AX=D888H
add al,al AX=D810H
mov ax,cx AX=6246H
我的答案:
mov ax,62627 AX=EE63H
mov ah,31H AX=3163H
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
mov al,bh AX=0482H
mov ah,bl AX=6C82H
add ah,ah AX=D882H
add al,6 AX=D888H
add al,al AX=D810H
mov ax,cx AX=6246H
错误原因分析(自评):
第一空以及第二空出错,第二空因为第一空而出错。第一空出错原因在于十进制转十六进制时发生计算错误。
计算能力还需提高。
(2):只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
参考答案(不一定是标准答案):
mov ax,2 AX=2
add ax,ax AX=4
add ax,ax AX=8
add ax,ax AX=16
我的答案:
mov ax,2
add ax,ax
add ax,ax
add ax,ax
自评:对于这道题,我也尝试过用其他方法,不过没想出效果更好的方法。从数学的角度分析这道题:四行代码算2的四次方,又因为只有加减、赋值语句,每行代码必须使幂的指数加1,第一行的赋值语句实现了使指数变为1,所以后面三行刚好实现指数为4,理论上说,最少只能用四行代码写出此程序。
以上只是我个人推理,不知严密否。不知有哪位狂人能只用三行代码。
- [zyc969] 写第二空时的思维是正确的,但第一空是错误的,第二空必须用到第一空的数据,所以第二空也是错的。 我十 05/20 22:00
- [tomato] 两道题都做错了? 认真态度有待提高啊! 05/20 20:57
- [tomato] 是的,这本书就是要一字一句地读才行。 05/18 22:54
- [zyc969] 嗯,明白了。 05/18 13:46
- [tomato] 应该是第二道题做错了。 05/17 08:57
- [tomato] 学习质量第一。 05/15 23:22
- [tomato] 对了,博主的博客中没有动态显示,博主可以观察一下其它学习者的学习博客,好像是参加了汇编语言学习活动的 05/13 23:20
- [tomato] 做的没问题,不过,这才是第一章,当然还是比较简单的,虽然后面的章节也不难,难的是是否能够一直坚持下去 05/13 23:19