《汇编语言程序设计》教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
授课题目第七章更灵活地定位内存地址的方法课时安排4学时一、教学目的
通过本次课程学习,让学生
1.掌握and与or指令
2.掌握大小写之母的转换
3.掌握SI和DI寄存器
4.掌握内存地址的多种定位方法
二、教学重点
1.and与or指令
2.定位内存地址的多种方法
三、教学难点
1.灵活运用and与or指令
2.灵活运用地址定位方法
四、教学方法(请打√):讲授√□ 讨论□ 课堂练习√□ 实验□ 其他□
五、教学手段(请打√):多媒体√□ 模型□ 实物□ 挂图□ 音像□ 其他□
六、教学内容及过程
1. 课程引入 (约 5 分钟)
我们已经学过了用bx来保存内存的偏移地址,也可以用cs:[idata]的方法来访问内存单元,还有没其他的内存地址定位方法?
我们已知一组由英文字母组成的字符串,如何将这些字符进行大小写的转换?
2. and和or指令 (约15分钟)
(1)and指令
and指令是逻辑与指令,按位进行与运算。
(2)or指令
or指令是逻辑或指令,按位进行或运算。
3. 关于ASCII码 (约10分钟)
编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。ASCII码就是一种编码方案。
4. 以字符形式给出的数据 (约10分钟)
汇编程序中,用 ‘……’的方式指明数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCII码。
Db表示定义字节型数据,即define byte。
例题分析。
5 大小写转换的问题 (约25分钟)
大写字母与小写字母的ASCII码相差20H,因此可以利用这个规律进行大小写转换。但是前提条件是需要知道该字母是大写字母还是小写字母。
例题分析。
目前我们尚未学习判断字母是大小写的问题,那么如何应用学过的知识进行大小写字母的转换。
就ASCII码的二进制形式来看,除第5位(位数从0开始计算)外,大写字母和小写字母的其他各位都一样。大写字母ASCII码的第5位(位数从0开始计算)为0,小写字母的第5位为1。因此就可以利用大小写字母的这个特点以及or指令和and指令进行大小写转换。
6 [bx+idata] (约10分钟)
[bx]指明一个内存单元。
[bx+idata]也指明一个内存单元,它的偏移地址为(bx)+idata。
mov ax,[bx+200]也可以写成mov ax,[200+bx]、 mov ax,200[bx]、mov ax,[bx].200问题7.1。
7 用[bx+idata]处理数组 (约15分钟)
(1)利用[bx+idata]的方式,就可以用更简化的方法来编写代码。
(2)例题分析。
(3)[bx+idata]与高级语言的比较。
[bx+idata]的方式为高级语言实现数组提供了便利机制
8 SI和DI (约15分钟)
(1) SI和DI寄存器
SI和DI与bx功能相近的寄存器,SI和DI不能够分成两个8 位寄存器来使用。
(2)例题分析。
(3)问题7.2分析
用ds:si指向源字符串的地址,ds:di 指向复制的目的地址。
问题7.2的简化。利用[bx(si或di)+idata]可以进一步简化代码。
9 [bx+si]和[bx+di] (约15分钟)
(1)[bx+si]和[bx+di]的含义
[bx+si]和[bx+di]的含义相似,[bx+si](或[bx+di])表示一个内存单元,它的偏移地址为(bx)+(si)(即bx中的数值加上si中的数值)。
(2)问题分析
10 [bx+si+idata]和[bx+di+idata] (约20分钟)
(1) [bx+si+idata]和[bx+di+idata]的含义
[bx+si+idata]表示一个内存单元,它的偏移地址为(bx)+(si)+idata。
(2) 指令mov ax,[bx+si+idata]的含义
(ax)=( (ds)*16+(bx)+(si)+idata )
上述指令的其他写法。
(3)问题分析
11 不同寻址方式的灵活应用 (约30分钟)
(1)[iata]、[bx]、[bx+idata]、[bx+si]、[bx+si+idata]的异同
(2)问题分析
(3)多重循环的处理
12 课程小结 (约 10分钟)
and指令是按位与运算,通过该指令可将操作对象的相应位设为0,其他位不变。
or 指令时按位或运算,通过该指令可将操作对象的相应位设为0,其他位不变。
小写字母的ASCII码比大小字母大20H,而且它们的ASCII码除第5位外,其余位相同,因此可以通过将第5为置0或1的方法进行大小写的转化,置0表示大写字母,置1表示小写字母。
[iata]、[bx]、[bx+idata]、[bx+si]、[bx+si+idata]的异同。
13. 思考与练习
(1)高级语言的一维数组与汇编中的[bx+idata]有何联系?二维数组与[bx+si+idata]有何联系?
(2)在汇编中如何进行大小写字母的转换?
(3)内存单元的地址有哪些表示方法?
七、参考资料
1.沈美明.IBM-PC 汇编语言程序设计.北京:清华大学出本社,1991.
2.郑晓薇.汇编语言. 北京:机械工业出版社,2009.
3.朱耀庭.汇编语言程序设计. 北京:清华大学出版社,2009.
4.杨季文.80x86汇编语言程序设计教程.北京:清华大学出版社,2008.
八、教学后记