找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 55|回复: 0

第6章习题

[复制链接]

620

主题

336

回帖

1057

积分

管理员

积分
1057
发表于 2026-3-15 09:29:09 | 显示全部楼层 |阅读模式
第6章习题

1.试找出以下程序片断中隐藏的问题并进行修正:
mov ax,21015
mov bl,10
div bl
and cl,0xf0
答:代码中是8位除法,AL保存商。但问题在于21015除以10的商太大,用AL保存不下。所以需要做16位除法。建议的修改为:
mov ax,21015
mov bx,10
div bx
and cl,0xf0

2.本章的程序在内存中的加载地址是0x0000:0x7C00,此时,指令jmp near infi在段内的偏移地址是多少?试修改本章的源程序以显示该值。
答:从表6-3可知,这条jmp指令的汇编地址是0x12B,所以程序加载后,实际的段内偏移是0x7C00加上0x12B,结果就是0x7D2B。
要显示该值,需要将指令
mov ax,number
修改为
mov ax,0x7C00 + infi

3.汇编语言编译器采用助记符来方便指令的书写和阅读,而且在内存里,机器指令以数字的形式存在。比如,mov是传送指令,div是除法指令。假如Intel公司新推出一款处理器,该处理器新增了一条指令,其机器码为两个字节的0xCD 0x88。因为是新指令,你的NASM编译器肯定没有一个助记符与之相对应。在这种情况下,如何在你的程序中使用该指令?
答:汇编语言程序编译后的结果是数字,是机器码。既然如此,可以直接在需要这条新指令的位置用伪指令DB来插入它的机器码,比如
...
DB 0xcd, 0x88
...

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2026-3-30 18:14 , Processed in 0.237834 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表