1、汇编语言实验报告6成绩评定教师签名嘉应学院 计算机学院实验报告课程名称:汇编语言程序设计开课学期:2016-2017学年第1学期班 级:1402指导老师: 实验题目:转移指令原理学 号: 姓 名: 实验8分析一个奇怪的程序程序从start开始,将ax设置为0,然后设置2个字节的空空间 将s2指向的内容放入s指向的内存中s的内容EBF6指s的地址相对于s1,跳转6个单位程序继续执行(机器指令为 JMP 0008),跳转到s(0b75:0008)的位置,s的内容为 EBF6,向低地址跳转6个单位(机器指令为 JMP 0000),即退出程序实验9 根据材料编程编程:在屏幕中间分别显示绿色、绿底红色、
2、白底蓝色的字符串welcome to masm!。对程序进行编译、链接、用debug跟踪程 结果如图在data数据段中存放要显示的字符串及其属性,02h表示绿色,24表示绿底红字、71表示白底蓝字先初始化各寄存器,把ds寄存器指向data段,ss指向stack段,sp指向栈底因为要输出三个字符串,要循环三次,执行循环前把cx,ax等入栈,防止数据被意外改变 输出的每个字符串有16(10h)个字符,每个字符占两个字节“属性+内容”,在偶地址中存放要输出的字符,存放在es段中在奇地址存放字符的表现属性,将一行字符串存进内存中,开始准备输出下一行字符串如果用t、 p、 g指令分步追踪程序的执行,可以
3、看到字符串的存储过程,表现出单个的字符和属性,如图:。实验10 编写子程序1、显示字符串 子程序描述 名称:show_str 功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串 参数:(dh)=行号(取值范围024),(dl)=列号(取值范围079) (cl)=颜色,ds:si指向字符串的首地址 返回:无 应用举例:在屏幕的8行3列,用绿色显示data段中的字符串assume cs:codedata segment db Welcome to masm!,0data endscode segmentstart: mov dh,8 ;dh装行号(范围:1-25) mov dl,3 ;dl
4、装列号(范围:1-80)注:每超过80等于行号自动加1 mov cl,0cah ;cl中存放颜色属性(0cah为红底高亮闪烁绿色属性) mov ax,data mov ds,ax mov si,0 call show_str mov ax,4c00h int 21hshow_str: code endsend start对程序进行编译、链接、用debug跟踪程 执行结果如图:show_str子程序的分析:bx=行号*每行的大小(a0h)=显示区所在的行号首地址的偏移地址每个字符占两个字节“属性+内容”,bx=bx+相对于显示行的列偏移量*2es存放显存的位置cx存放data段中的内容,如果为0则结束程序如果结果不为0,就把data段中对应的字符及其属性存到显存中