您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 造纸印刷 > 湖南工业大学汇编语言实验指导书
汇编语言程序设计实验指导书(2006年修订版)邱银安编写杨伟丰审核计算机与通信学院2006年10月内部资料严禁翻印I目录实验一DEBUG的应用................................................1一、实验目的........................................................1二、实验仪器与设备..................................................1三、实验原理和内容..................................................1四、实验过程........................................................4五、实验分析与思考..................................................6六、实验注意事项....................................................6实验二汇编程序的编写、汇编、连接、运行.............................7一、实验目的........................................................7二、实验仪器与设备..................................................7三、实验原理和内容..................................................7四、实验过程........................................................8五、实验分析与思考..................................................9六、实验注意事项....................................................9实验三分支程序的设计与调试.......................................10一、实验目的.......................................................10二、实验仪器与设备.................................................10三、实验原理和内容.................................................10四、实验过程.......................................................10五、实验分析与思考.................................................11六、实验注意事项...................................................11实验四循环程序的设计.............................................13一、实验目的.......................................................13二、实验仪器与设备.................................................13II三、实验原理和内容.................................................13四、实验过程.......................................................13五、实验分析与思考.................................................14六、实验注意事项...................................................14实验五待定.......................................................141实验一DEBUG的应用一、实验目的(1)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。(2)深入了解数据在存储器中的存取方法以及堆栈中数据的压入与弹出。(3)利用DEBUG运行简单的程序段。二、实验仪器与设备486以上PC机WIN98、DOS操作系统,宏汇编程序,连接程序。三、实验原理和内容1、Debug的基本知识(1)Debug程序的启动方法1:键入debug后回车只是装入Debug程序,并没指定要调试程序;方法2:相继装入Debug程序和要调试的程序格式:[路径]debugfilename屏幕上出现提示符“-”注意:filename必须是可执行文件,要带扩展名exe(2)Debug程序的退出在提示符“-”后输入“Q”回车即可。(3)D命令功能:显示数据段中指定单元或单元块的内容。【例1】D1000↙结果显示128(80H)个字节的内容,一行16个字节,共8行。其中每一行的第一列是数据段段寄存器DS的当前值,第二列是每一行的第一个字节在段中的偏移量,中间是16个单元的内容(十六进制),单元地址依次加1。最右边是该单元内容(十六进制形式的ASCII码)所对应的字符。【例2】DDS:1000↙结果显示和上例相同,因此在没有定义具体的数据段时,可以省略DS。【例3】D1234:1000↙结果显示数据段中以1234H为段地址、偏移量从1000H开始的128个单元的内容。该例定义了显示范围,显示结果的段地址不一定是段寄存器DS中的当前内容,而是一个指定的段地址。【例4】D1234:1000100F↙结果显示数据段中以1234H为段地址、偏移量从1000H开始到100FH结束的162个单元的内容。该例不仅定义了具体的段地址,而且定义了显示的起始和结束地址,不一定显示128个字节。(4)E命令功能:修改内存单元内容【例1】E1000↙该命令的功能是从DS:1000H处修改若干个数据。响应如下:1BD3:1000CD.这里1BD3H是DS的当前值(每台计算机内容可能不一样),CDH是偏移量为1000H单元的原来内容。输入一个新的数据后,如果按空格键,将显示(修改)相邻高地址1001H单元的内容,输入新数据后再按空格键,将显示(修改)相邻高地址1002H单元的内容,以此类推。如果输入新的数据后回车,将不再提示修改后面的单元内容。【例2】EDS:1000↙功能和上例相同【例3】E1234:1000↙功能是修改数据段中以1234H为段地址、偏移量从1000H开始的单元内容。(5)命令U功能:从代码段中指定的位置对机器代码进行反汇编,得到相应的助记符形式的指令。【例1】U1000↙功能是从代码段中以CS寄存器的值为段地址,偏移量为1000H开始的地方执行反汇编,一次反汇编32个字节的机器代码。【例2】U↙若地址省略,如果是第一次使用U命令,则从CS、IP的当前地址处开始反汇编。如果不是第一次使用,则从上一个U命令的最后一条指令的下一单元开始反汇编32个字节。【例3】UCS:1000↙同上例【例4】U1234:1000↙从指定的CS、IP地址开始反汇编【例5】U1234:1000L9↙从指定的CS、IP地址开始反汇编,长度不是32个字节,而是9个字节。3(6)寄存器的显示和修改命令R【例1】R↙如果R后面什么都不带,这时R命令就用来显示所有寄存器内容,包括标志寄存器中的8个状态标志位的状态,并在最后提示下一条将要执行的指令。【例2】RAX↙如果R后面跟上一个寄存器的名称,这时R命令就用来显示这个寄存器的内容并等待修改。如RAX,系统将响应显示出AX的内容并在下一行显示出冒号。如果在冒号后键入进值后回车,AX即修改为新值;如果不输入新值而直接回车,则不改变原值。【例3】RF↙功能是显示和修改标志位状态。注意8位状态标志位不是以0或l的形式显示的,而是用两个字母显示的,这样更直观。字母和状态对应关系如下表所示:标志名置位复位溢出Overflow(是/否)OVNV方向Direction(减量/增量)DNUP中断Interrupt(允许/屏蔽)EIDI符号Sign(负/正)NGPL零Zero(是/否)ZRNZ辅助进位AuxiliaryCarry(是/否)ACNA奇偶Parity(偶/奇)PEPO进位Carry(是/否)CYNC系统响应显示当前8个状态标志位的状态,如果直接回车,将不改变标志位的状态。也可以键入其中一个或多个新的状态符,重新设置其状态。键入时可以不考虑标志位的顺序,中间也可以不加空格。4(7)运行命令G【例1】G=10001023↙功能是从代码段1000H处开始运行程序,到1023H处停止程序执行。【例2】G=1000↙此处没给出结束地址,则系统会自动在程序应该停止的地方结束。因此在我们编写的汇编语言源程序中,就需要一个程序结束返回到操作系统的指令。【例3】G↙如G后不带任何参数,则从当前指令即从CS:IP指定的地址开始执行,并一直执行到该停止的地方结束。因为今天是练习DEBUG命令,并没有涉及到具体的程序,所以最好不要使用不带结束地址的G命令,否则会可能因为内存中没有程序结束相关指令而导致死机。(8)单步执行命令T【例1】T=10003↙功能是从代码段偏移量为1000H的地方开始执行3条指令后停下来,并在执行每条指令后显示寄存器的当前内容、状态值和下一条将要执行的指令,IP值自动加1。【例2】T=1000↙当后面的步数省略时,则从指定地址默认执行1条指令后停下来,并在执行该指令后显示寄存器的当前内容、状态值和下一条将要执行的指令,IP值自动加1。【例3】T↙功能是从CS、IP的当前值开始执行1条指令后停下来,IP值自动加1。2、实验内容(1)设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。(2)设置AX=0002H,编一个程序段将AX的内容乘以10,要求用移位的方法完成。3、实验要求本实验只要求在DEBUG调试程序状态下进行,包括汇编、调试、执行等。四、实验过程(1)进入DEBUG,用A命令将汇编程序段送入内存CDEBUG-A14DE:0100MOVSP,2000514DE:0103MOVAX,300014DE:0106MOVBX,500014DE:0109PUSHAX14DE:010APUSHBX14DE:010BPOPAX14DE:010CPOPBX14DE:010DHLT14DE:010E(2)、将汇编程序段存入磁盘(其中el为文件名)-Ne1-RCXCX0000:000d-wwriting0000Dbytes(3)用反汇编命令U,将汇编程序段调到显示屏幕上-U10010D14DE:0100BC0020movsp,200014DE:0130B80030movAX,300014DE:0106BB0050MOVBX,500014DE:010950PUSHAX14DE:010A53PUSHBX14DE:010B58POPAX14DE:010C5BPOPBX14DE:010DF4HLT(4)用G命令执行程序-G=10010DAX=5000BX=3000CX=000EDX=0000SP=2000BP=0000SI=0000DI=0000DS=14DEES=14DESS=14DEIP=010DNVUPEIPLNZPONC14D3EE:010DF4(5)用R命令看AX和BX的内容-RAX6AX5000:-RBXBX3000:(6)用单步执行命令T进行一条一条指令的执行,每执行一条指令,用R命令观察SP,AX,BX的内容变化。(
本文标题:湖南工业大学汇编语言实验指导书
链接地址:https://www.777doc.com/doc-2292211 .html