《汇编语言程序设计》教案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.

八、教学后记

相关文档
最新文档