本部分为第10章后的课程设计部分。
主要任务是将实验七中的Power idea公司的数据按照下图格式在屏幕上显示出来。
实验思路:
1.整个代码的主体是一个遍历21行的循环。
2.对于每行,最重要的工作就是将data部分的值复制到可在屏幕上显示的内存位置。
设定寄存器,data段部分,段地址用ds
寄存器,偏移地址用bp
和si
寄存器。
屏幕显示部分,段地址用es
寄存器,偏移地址用di
寄存器。
注意每行开始时,需要重新给di
赋值,每行结束后,需要对es
、bp
、si
进行处理。
3.对于每行要复制的数据,首先将年份复制过来,之后通过调用函数转化和复制剩余数据。
4.编写子程序用于转化数据:
调用之前编写的防溢出函数,反复除以10后加30h入栈,然后出栈存入内存相应位置。
5.一定不能忘记,每个字占两个字单元,第一个字节存ASCII码,第二个字节存属性。
出现过的问题:
1.似乎使用[bp]
默认的是ss:[bp]
,所以最好加上ds:[bp]
。
2.按理说应该是从B8000h
内存就可以显示,但是实际实验的时候B8168h
都显示不出来。当时不知道出错原因,调试了很久……现在猜想可能是调试的时候按下回车键,导致往后退了几行。
3.另外寄存器比较少,所以需要提前规划好寄存器的使用。
代码为:
assume cs:code,ds:data,ss:stack
data segment
year db '1975','1976','1977','1978',