好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

汇编语言程序设计实验指导.docx

13页
  • 卖家[上传人]:cn****1
  • 文档编号:493693012
  • 上传时间:2022-09-14
  • 文档格式:DOCX
  • 文档大小:28.16KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第2 章 汇编语言程序设计实验2・1、实验1-1—多字节数的运算1、实验目的 熟悉汇编语言的上机环境和各种工具(编辑、汇编、连接、调试) 掌握完整段和简化段两种汇编程序的编写;掌握简单汇编程序的处理和调试过程2、实验内容⑴、两个长度为3个字节(3B)的二进制无符号数,分别存放在首地址为bufl和buf2 的连续内存单元中,编程求这两者之和,并将结果放在起始地址为res的内存单元中例如, 这两个数据为888888H、456789H,则其和应为[1]345671H00CDF011H,对应十进制数表示 13496337,)要求:驴用完整段和简化段两种方式实现观察它们的反汇编结果并进行比较,单步运行程序注意:程序运行前先将res清0,程序运行后观察res单元中的数据是否符合预期数据存放应“高对高、低对低”⑵、将两数改为3B的压缩BCD码,重复以上实验过程例如,这两个数据为888888H、 456789H,则其和应为[1]345677H (表示[1]345677)肯 注意,每两个字节相加后,应紧接着进行二-十进制调整3、实验扩展和思考⑴、计算两个长度为3B的二进制数据之差应如何进行操作?(2)、计算两个长度为3B的压缩BCD码数据之差应如何进行操作?实验报告•方案描述•程序清单2・2、实验1-2——BCD码操作(参考课本P72,例3.5)(如果要求转换为ASCII 码显示出来呢?)1、 实验目的掌握BCD码的操作,包括压缩BCD码的分离和非压缩BCD码的压缩等。

      2、 实验内容⑴、将存放在首地址为buf的5B的压缩BCD码分离为10B的非压缩BCD码,并存于 首地址为res的单元中⑵、将存放在首地址为buf的10B的非压缩BCD码合并为5B的压缩BCD码,并存于 首地址为res的单元中10B的非压缩BCD码数据请自行设计驴注意按“高对高、低对低”的方式存放⑶、将存放在内存单元buf (字节)中的BCD码转为相应的数据并存到res (字节)单 元例如将35H转换为二进制数据应得到23H、即十进制的353、 实验扩展和思考⑴、将5B压缩BCD码分离并转换为10B的ASCII码,并存于首地址为res的单元中⑵、将存放在首地址为buf的5B压缩BCD码分离为10B的非压缩BCD码,并存于首 地址为 res 的单元中⑶、将单字节二进制数据转为相应的BCD码数据应如何操作?实验报告•方案描述•程序清单2・3、实验1-3—— 据的求和、求均1、实验目的掌握数据指针的使用; 掌握无符号数的扩展和除法运算2、实验内容⑴、在首地址为buf的内存中,连续存放者20个单字节无符号数,将它们相加,得到 16位的结果,并将它存到首址为res的单元请自行设计数据,比如设计它们为0〜9及90〜99, 那么求和后的结果应为 990(03DEH)。

      驴 用8位寄存器累加求和时,请注意进位处理;也可以将数据扩展后用16位寄存器累加求和⑵、在题⑴的基础上,继续求这批数据的平均值,最后将运算结果一一和、商、余数分 别存放到resl(字)和res2 (字节)res3 (字节)等3处肯求均可以用16位的除法实现,也可以用连续减并统计够减的次数来实现3、实验扩展和思考⑴、如果这批数据的数量为16个,求平均值的操作还可以怎样来实现?⑵、如果求平均值时考虑四舍五入,以上操作又该如何实现?实验报告•方案描述•程序清单2・4、实验1-4——联合移位、代码转换和字符输出1、 实验目的掌握多字节数据的联合移位; 掌握二进制数据转为 ASCII 码的方法; 掌握调用DOS中断进行字符输出的方法2、 实验内容⑴、将存放在首地址为buf、长度为3B的数据联合左移2位例如,左移前为88 88 88H, 左移后应为22 22 20H程序运行后观察结果是否符合预期⑵、将存放在首地址为buf、长度为3B数据,通过调用INT 21H的AH=02H子功能、以二进制的形式从屏幕输出例如,数据为8421A5H,输出应为 “100001000010000110100101”3、 实验扩展和思考⑴、在第⑵题的显示中,要求每输出4位后插入2个空格。

      例如,数据为8421A5H, 则输出应为“ 1000 0100 0010 0001 1010 0101”⑵、将3B数据以十六进制的形式从屏幕输出应如何进行操作?例如,数据为8421A5H, 输出应为“ 8421A5”实验报告•方案描述•程序清单2・5、实验1-5—— 符串的输入输出1、 实验目的掌握字符串的输入和输出2、 实验内容⑴、已知一个字符串的数据结构如下:首地址为srting,第一个字节为字符串长度,第 二个字节为字符串实际存放的首址,其后是字符串的内容,编程将字符串srting输出该字 符串的内容请自行设计,例如可如下设计string! db 14,string+2, “Welcom to you!”在屏 幕上输出该字符串string db 15db 0db "Welcome to you!$"⑵、输出字符串时,将其中的小写字母全部转换成大写字母输出⑶、调用DOS中断,完成字符串的以下输入和输出操作具体要求是:①调用INT 21H 的AH=09H子功能输出提示信息“Input String:”,② 调用INT 21H的AH=0AH子功能输入 一个字符串,③ 输出回车(ASCII码为0DH)、换行(ASCII码为0AH),④ 将输入字符 逐一改大写后输出。

      参考P73例3.6)keynum = 255keybuf dbdbkeynum ;定义缓冲区大小0 ;将来存输入字符个数(不包括回车键)db keynum dup(0) ; 缓冲区赋初值 0msg db'Input String:','$',0dh,0ahmov dx,offset msgmov ah,9int 21h ;输入提示信息,In pu t St ri ng:mov dx,offset keybufmov ah,0Ahint 21h ; 调用 INT 21H 的 AH=0AH 子功能输入一个字符串 ,存于DS:DX~注意,该题中字符串的存放格式同第⑴题3、实验扩展和思考输出任意长度(小于256)、以“$”(ASCII码为00H)结束标志的字符串例如“Welcom to you!$”输出时,要求将字符串中的所有小写字母转换成大写字母实验报告•方案描述程序清单2・6、实验1-6—— 支形成(参考P74例3.7)1、 实验目的掌握条件转移指令的使用掌握用 CMP 指令形成多分支的方法2、 实验内容⑴、一批单字节有符号数,总共20个,分别统计其中0、正数、负数的个数,并将统 计结果分别存放在内存单元res_z、res_p(positive)及res_n (negative)中。

      相关数据请自 行设计⑵、调用INT 21H的AH=01H功能,接收从键盘输入的一个字符,当它为“F”或“f” 时,输出“FORTRAN”并退出;当它为“B”或“b”时,输出“BASIC”并退出;当它为 “C”或“c”时,输出“C/C++ ”并退出,当它为“P”或“p”时输出“PASCAL”并退出, 如果输入其他字符,则什么也不输出、鸣笛一声退出(BEL: ASCII码07H)3、 实验扩展和思考⑴、在8086/8088的指令系统中,可以实现条件转移的基本指令有哪些?它们依据哪些 标志位来进行分支跳转?有哪些指令的执行会影响到这些标志位? INC和DEC指令是否影 响进/借位标志?⑵、按第⑵题的思路,从键盘输入的字符如果为数码(0~9)则原样输出,如果是小写 字母则转为大写输出,如果是大写字母则转为小写输出,程序不断循环,敲击其他键时无效, 直到敲击ESC键(ASCII为1BH)时方才退出实验报告•方案描述•程序清单2・7、实验1-7—— 序和检索(参考P75例3・8)1、 实验目的掌握循环程序的构成和循环的边界控制 掌握标志的使用2、 实验内容⑴、从buf开始的内存单元连续存放着20个无序的单字节无符号数,请将它们从小到 大进行排序。

      buf db 3,0, 255, 76,…buf_size = $-bufmov cx,buf_size-l睜 可在程序中设置标志flag,每轮扫视前令flag=00H(表示无交换发生),扫视过程 中只要数据因顺序不对而发生交换,就令flag=FFH (可能发生多次),扫视一遍 后检查flag,如果为1说明还要继续扫视,否则数据已经正确排序、扫视停止 该法效率不高、但容易实现2)、从buf开始的内存单元连续存放着20个无序的单字节无符号数,编程在其中查找 一个确定的数,例如55H如果找到则将找到的位置(1〜20)送res单元,否则将0送res 单元3、实验扩展和思考⑴、如果将第⑴题中的无符号数改为有符号数,程序应如何实现? ⑵、如果将第⑵题中的输出改为在屏幕上显示,程序应如何实现?实验报告•方案描述•程序清单2・8、实验1-8——程序的定义与调用1、 实验目的掌握子程序编写和调用;掌握子程序的参数传递和返回值的获取方法;2、 实验内容“累加和”校验是对批量数据进行校验的一种方法具体做法是:在不考虑进位的情况 下不断进行字节累加,所得到的结果称“累加和(字节)”⑴、子程序sub负责对批量数据进行累加和运算,要求它利用堆栈来传递参数,先后压 入堆栈的两个参数分别是:①批量数据的首地址(字)②批量数据的字节数(字)求出 的累加和通过返回值(字)返回。

      请按要求编写该子程序⑵、设计一段主程序、并提供一批单字节数据,调用该子程序对这批数据进行求累加和 的运算,将子程序返回的累加和存入res单元数据的数量和具体内容请自行设计3、 实验扩展和思考⑴、在第⑴题的基础上,如果子程序返回两个数据:①所有数据的“和”(字),②所 有数据的“平均值”(字),程序应如何实现?⑵、如果改用寄存器来传递参数和返回值,子程序和主程序又该如何实现?实验报告•方案描述•程序清单2・9、实验1-——宏定义与宏调用1、 实验目的掌握宏的定义和调用方法;掌握宏与子程序的区别;掌握BIOS中断调用(INT 10H) AH=01H/02H/06H/08H等4个子功能的使用方法; 掌握DOS中断调用(INT 21H)AH=02H/06H/09H/2CH/2DH等5个子功能的使用方法; 了解 INCLUDE、IF1_ENDIF、LOCAL 等伪指令的使用2、 实验内容以下源程序由clock.asm和clock.inc两个文件构成°clock.asm文件用包含命令INCLUDE 将文件clock.inc嵌入到它的头部,然后作为一个源文件来进行处理该程序(完整段)的功能是以“ih:mm:ss”的形式显示不停变化的时钟(从'00:00:00” 开始行走),如果用户按任意键,则时钟停顿,如果用户再次按任意键,则时钟又从“00:00, 00.00”开始行走。

      ⑴、阅读程序,搞清楚程序中一共定义了几个宏其中,宏定义SET_TIME、GET_TIME、 DISPLAY、DIR_CON_IO、READ_KBD、CLS_SCREEN 和 SET_CSR 的功能各是什么?它 们的参数及含义是什么?宏定义CONVERT的功能是什么?参数含义是什么?有关BIOS中 断和 DO。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.