微机原理实验2014
- 格式:doc
- 大小:610.50 KB
- 文档页数:11
第1篇一、实验目的1. 理解和掌握微机的基本组成和工作原理;2. 熟悉微机硬件设备和实验仪器的使用方法;3. 提高动手实践能力,培养解决实际问题的能力;4. 深入理解微机原理课程内容,为后续课程学习奠定基础。
二、实验内容1. 微机系统认识实验2. 微机硬件组成实验3. 微机指令系统实验4. 微机寻址方式实验5. 微机程序设计实验6. 微机接口技术实验三、实验仪器与设备1. 微机原理实验箱2. 示波器3. 数字万用表4. 计算机一台5. 实验指导书四、实验步骤与内容1. 微机系统认识实验(1)观察实验箱的结构,了解各个模块的功能;(2)熟悉实验箱的电源、复位、运行等按钮的使用方法;(3)学习微机系统的工作流程,包括加电、复位、启动等过程;(4)观察微机系统启动后的运行状态,了解各个模块的协同工作。
2. 微机硬件组成实验(1)观察实验箱的CPU、内存、I/O接口等硬件模块;(2)学习CPU的内部结构,包括寄存器、控制单元、运算单元等;(3)学习内存的存储原理,了解ROM、RAM等存储器的特点;(4)学习I/O接口的工作原理,了解中断、DMA等传输方式。
3. 微机指令系统实验(1)学习微机指令系统的基本格式,包括操作码、地址码等;(2)掌握微机指令系统的寻址方式,包括立即寻址、直接寻址、间接寻址等;(3)编写简单的汇编语言程序,实现加、减、乘、除等运算;(4)学习微机中断处理过程,了解中断向量表、中断服务程序等概念。
4. 微机寻址方式实验(1)学习微机寻址方式的基本概念,包括直接寻址、间接寻址、寄存器寻址等;(2)编写程序,实现不同寻址方式下的数据访问;(3)观察不同寻址方式对程序执行速度的影响。
5. 微机程序设计实验(1)学习汇编语言程序设计的基本方法,包括数据定义、指令编写、程序结构等;(2)编写简单的程序,实现数据交换、排序等操作;(3)学习微机程序的调试方法,包括单步执行、断点设置等。
6. 微机接口技术实验(1)学习微机接口技术的基本概念,包括并行接口、串行接口等;(2)观察实验箱中的并行接口、串行接口等模块,了解其工作原理;(3)编写程序,实现数据在并行接口、串行接口之间的传输;(4)学习微机中断处理在接口技术中的应用。
实验一系统认知实验实验目的:了解汇编语言的设计、编写和调试程序的方法,掌握DEBUG的使用。
实验设备:装有DOS系统和MASM5.0的微机一台,或TDN86/88微机原理教学实验系统一台。
实验内容:编程实现在屏幕上显示一个大写字母“A”或字符串“HOW ARE YOU?”,用DEBUG调试程序实验要求:1、上机前做好充分准备,包括源程序清单、调试步骤等;2、用DEBUG来调试程序,熟悉DEBUG的使用。
实验步骤:1、编写程序并输入,检查无误后,经汇编、连接后运行,用DEBUG装入。
2、用U命令反汇编程序,应用R、G等命令,观看运行情况。
3、用D、E、A等命令查看、修改源数据,用G命令查看运行结果。
4、用Q命令退出DEBUG上机过程1.建立源文件使用EDIT软件,得到扩展名为ASM的汇编语言源程序文件。
(扩展名.asm 勿忘加!)2.汇编源程序使用汇编程序MASM对源程序进行汇编,生成OBJ、LST和CRF文件(后两种一般不需要,可直接回车)。
如程序有错,可以根据提示信息,重新编辑、汇编源程序,直到没有严重错误为止。
3.连接程序使用连接程序LINK,对汇编程序产生的目标文件进行连接,产生可执行的程序EXE。
4.调试或运行程序具体过程如下:1. 编辑C:\MASM>EDIT 文件名.ASM2. 汇编C:\ MASM >masm 文件名.ASM3. 连接C:\ MASM >link 文件名.obj4. 调试C:\ MASM >debug 文件名.exe-U 反汇编,记下程序首地址和结束地址-D 段地址:偏移地址察看内存单元内容-E 段地址:偏移地址修改内存单元内容:空格修改下一个, 回车结束修改-G=起始地址结束地址运行程序参考源程序:(1) 屏幕上显示一个大写字母“A”STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AH, 02HMOV DL,41HINT 21HINT 20HCODE ENDSEND START(2) 屏幕上显示字符串“HOW ARE YOU?”DA TA SEGMENTBUF DB 'HOW ARE YOU?$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET BUFMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验二分支程序设计实验一、实验目的1.掌握分支程序的结构。
一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。
二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。
(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。
(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。
2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。
(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。
(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。
3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。
(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。
(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。
4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。
(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。
(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。
三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。
2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。
3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。
4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。
四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。
微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)----05f17e0a-6eb2-11ec-86e4-7cb59b590d7d微机原理实验报告姓名:班级:学号:时间:实验名称:基本汇编语言程序设计实验1:两个32位无符号数乘法程序实验2:代码系统转换程序设计<1>十六进制到ascii<2>从二进制到ascii一、程序流程图1、两个32位无符号数乘法程序:2.十六进制到ASCII二、程序的实现:1、实验一程序:名称32位多数据段mulnumdw0000,0ffffh,0000,0ffffh,4dup(?)dataendsstack'stack'db100dup(?)斯塔克恩兹codesegment假设:代码,ds:data,ss:stack,es:datastartprocfarbegin:pushdsmovax,0pushaxmovax,datamovds,axmoves,axleabx,mulnummulu32:movax,[bx]movsi,[bx+4]movdi,[bx+6]乳化液mov[bx+8],axmov[bx+0ah],dxmovax,[bx+2]mulsiaddax,[bx+0ah]adcdx,0mov[bx+0ah],axmov[bx+0ch],dxmovax,[bx]muldiaddax、[bx+0ah]adcdx、[bx+0ch]mov[bx+0ah]、axmov[bx+0ch]、DXFmovax,[bx+2]muldipopfadcax,[bx+2]adcdx,0mov[bx+0ch],axmov[bx+0eh],dxretSTARTENDPCODENDSENDSTART2、实验二的程序:1)名称HEX_uu更改为uuidatasegmentl1dw2stringdb34h,98hl2dw?缓冲区db2*2dup(?)数据端stacksegmentparastack'stack'db100dup(?)stackends代码段assumecs:code,ds:data,es:data,ss:stackstartprocfarbegin:pushdsmovax,0pushaxmovax,datamovds,axmoves,axmovcx,l1leabx,stringleasi,buffermovl2,cxmovcx,ax再次:moval,[bx]movdl,alandal,0fhcallchangemoval,dlpushcxmovcl,4shral,clpopcxcallchangeincbxretstartendpchangeproccmpal,10jladd_0addal,'a'-'0'-10add_0:addal,'0'mov[si],alincsiretchangeendpcodeendsendstart2)namebinary_to_acsiidatasegmentnumdw4f78hstringdb16dup(?)dataendsstack'stack'db100dup(?)斯塔克恩兹codesegment假设:代码,ds:data,ss:stack,es:datastartprocfarbegin:pushdsmovax,0pushaxmovax、数据MOVDS、axmoves、axleadi、字符串movcx,lengthstringpushdipushcxmoval,30h;repstowpopcxpopdimoval,31hmovbx,numagain:rclbx,1jncnextmov[di],alnext:incdiloopagainretstartendpcodeendsendstart三、实验感想:在实验过程中,我根据书慢慢理解了这些代码的含义,并纠正了代码中的错误。
软件实验报告软件实验一一、实验目的1.熟悉软件实验的基本步骤和汇编程序的调试方法;2.了解内存块的移动方法;3.了解将十六进制数转换成ASCII值的方法。
二、实验原理用MOV和MOVX指令可以进行数据的赋值和移动,用循环可以完成大量数据的复制。
三、实验内容及步骤1、软件设置为模拟调试状态,在所建的Project文件中添加例程1的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。
打开CPU窗口,观察CPU窗口各寄存器的变化。
打开View菜单中的Memory Window,可以观察内部RAM、外部RAM的数据和程序存储器中的程序。
在Address窗口输入X:8000H后回车,观察8000H-800FF起始的256个字节单元的内容。
2、新建一个Project文件,添加例程2的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。
打开View菜单中的Memory Window,在Address 窗口的Memory#1输入X:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,观察外部RAM3000H和4000H中的内容。
3、添加将片内30H-3FH单元的内容复制片外片外1030H~103FH中的源程序,编译运行,观察比较30-3FH单元中的内容和片外1030H-103FH中的内容。
4、添加将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中的源程序,编译运行,观察结果。
5、添加求内部RAM 30H—37H单元中8个无符号数的算术和的源程序,8个无符号数设定为25H,36H,4AH,65H,7FH,82H,9BH,1DH,观察39H,38H中的数字是否分别为02H,C3H。
四、实验结果1.步骤1的结果为8000H-80FFH的内容都为1.2.步骤2的结果为3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。
微机原理第二次实验报告实验二:加法及判断程序调试实验实验报告健行理工1402班 陈丽红 201424450202一、实验目的1. 掌握编写汇编语言源程序的基本方法和基本框架。
2. 学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。
3.掌握程序中数据的产生与输入输出的方法。
二、实验内容1. 用汇编语言编写一个加法程序: 1325十9839,用ASCII 码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加结果显示输出。
2. 设有一组数据: 5,-4,0,3,100,-51,编程判断:每个数是>0、=0、还是<0 ?并输出其判断结果。
即:⎪⎩⎪⎨⎧<-=>=010001x x x y 当当当三、程序说明3.1实验内容一:(1) 两个数据先以相反的顺序以ASCII 码的形式存放在数据段的DATA1和DATA2中,相加时从DATA1和DATA2的起始字节开始相加,也就是从数的个位数开始相加。
相加后的结果存放在DATA2开始的存储单元中,同时用DL 保存进位位。
(2)对于本题来说,题目为两个四位数相加,所以定义循环数为4。
(3) 程序中的加法运算是ASCII 码运算,后面应加一条ASCII 码加法调整指令AAA ,经AAA 调整的加法指令,将ASCII 码的数据高4位清“0”,因此要将结果每位数高4位拼成3,变成ASCII 码存到DATA2中。
(4)一位运算结束后将用于保存进位位的DL 复原,进入循环,进行下一位求和计算。
(5)由于计算是从个位数相加开始,所以存入DATA2中的数据应该以相反的顺序输出,故再进行一轮循环输出,得到最终的计算结果。
3.2实验内容二:(1)首先将原始数据(5,-4,0,3,100,-51)装入起始地址为VAR 的字节存储单元中。
(2)将判断结果以字符串的形式分别存放在数据区中,以便在显示输出时调用。
(3)判断部分采用CMP 指令。
实验题目8253定时/计数器实验一、实验目的与要求:1。
学会8253芯片和微机接口原理和方法。
2. 掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容:1、实验原理本实验原理图如图1所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表1所示.8253A的片选地址为48H~ 4FH。
因此,本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字.采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ, 输出OUTO 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地(”0"电平)或甩空(”1"电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。
2、实验线路连接(1) 8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。
(2) 8253A的GATE0接+5V.3、实验步骤(1) 按图1连好实验线路(2)运行实验程序1.按“调试”按钮2。
选“窗口”“进入示波器窗口",然后最小化3。
按“运行按钮”4.将模拟示波器窗口打开,选择“串行口2",再按ctrl+F2 按钮即可看到波形图1显示“8253-1”用示波器测量8253A的OUT2输出插孔,应有频率为1KHZ的方波输出,幅值0~4V三、实验代码:CODE SEGMENTASSUME CS:CODETCONTRO EQU 004BHTCON2 EQU 004AHCONTPORT EQU 00DFHDATAPORT EQU 00DEHDATA1 EQU 0500HSTART: JMP TCONTTCONT:CALL FORMATCALL LEDDISPMOV DX,TCONTROMOV AL,0B6H ;要使用方式2,0B6H要改为0B4HOUT DX,ALMOV DX,TCON2MOV AL,00 ;输入频率(即时间常数)OUT DX,AL ;要修改频率,只需更改送给AL的值(注意先送低8位,MOV AL,10H ;后送高8位)OUT DX,ALHLTLEDDISP:MOV AL,90H ;显示数据方式命令字送8279控制字MOV DX,CONTPORT ;8279命令状态口OUT DX,ALMOV BYTE PTR DS:[0600H],00 ;置显示位数初值为0 LED1: CMP BYTE PTR DS:[0600H],07H ;判断显示位数满8为否?JA LED2 ;满8位转子程序返回MOV BL,DS:[0600H] ;未满8位从数据区取数MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DATAPORT ;8279数据口OUT DX,ALADD BYTE PTR DS:[0600H],01H ;显示位数加1JNZ LED1LED2: RET ;子程序返回FORMAT: MOV BX,0 ;显示8253———1 MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D4FHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND START四、思考题若改用方式2,并改变时间常数,如何编写程序。
实验报告
(2014/ 2015 学年第二学期)
课程名称微型计算机原理与接口技术
实验名称汇编语言语法练习与代码转换
实验时间2020 年 3 月31 日指导单位计算机学院、软件学院
指导教师
学生姓名班级学号
学院(系) 专业
实验报告
三、实验过程描述与结果分析
汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行:
(1) 编辑源程序(生成.ASM文件)
(2) 汇编源程序(.ASM→.OBJ)
(3) 链接目标程序(.OBJ→.EXE)
(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)
(5) 运行程序输出结果。
CALL CHANG
MOV AH,9
MOV DX,OFFSET MEST ;MOV DX,OFFSET MESG
INT 21H
MOV AH,4CH
INT 21H
CHANG:PROC
LAST: CMP [BX],10 ;LAST:CMP BYTE PTR [BX],10
JC NEXT
SUB [Bx],10 ;sub byte ptr [bx],10
INC [BX+7] ;INC BYTE PTR [BX+7]
JMP LAST
NEXT: ADD [BX+8],SUM ;NEXT:MOV CL,SUM
ADD BYTE PTR [BX+8],CL ADD [BX+7],30H ;ADD BYTE PTR [BX+7],30H
ADD [BX+8],30H ;ADD BYTE PTR [BX+8],30H
RET
CHANG:ENDP
CODE ENDS
END BEG。
微机原理实验内容实验一上机过程及动态调试DEBUG应用一.实验目的1.学习汇编语言上机方法。
2.深入了解DEBUG动态调试软件的应用,掌握下列命令的使用方法:U 反汇编 G 运行程序D 显示内存内容 R 显示╱修改寄存器内容N 指定文件 L 装入被指定的文件Q 返回DOS3.实际感受段地址,偏移地址,存储器组织及CPU寄存器等概念。
二.实验任务实验任务一双字节数相加把内存单元DATA1和DA TA2中的两个双字节数(十六进制)相加,结果存入SUM单元。
实验任务二 DOS 功能调用下列程序的功能是,由键盘输入1个英文字母,若输入的是小写字母,则显示对应的大写字母;若输入的是大写字母,则显示对应的小写字母。
START:MOV AH,01HINT 21HXOR AL,20HMOV DL,ALMOV AH,02INT 21HMOV AH,4CHINT 21H请分析上述程序,并上机运行该程序,验证其功能。
请结合下列的内容,掌握DOS 功能的调用调用方法。
DOS为程序设计人员提供许多功能子程序,可供用户直接调用。
调用时需要使用中断指令:INT 21H 在使用指令前,应将调用的功能号送入AH,有关入口参量送入指定寄存器。
若有出口参量,中断调用返回后,结果在指定的寄存器或存储单元中。
其使用方法如下:送入口参量给指定寄存器;AH ←功能号;INT 21H ;主要的几个DOS功能调用说明文件如下。
1. 4CH号功能调用MOV AH,4CH ;子程序编号4CH→AH;即功能号4CH→AHINT 21H ;返回DOS2. 01H号功能调用;从键盘输入一个字符(功能号=1);功能号 1 → AH;入口参数:无INT 21H ;等待按键,按下一个键则该句执行完,;字符回显;出口参数:AL中有键入的字符(ASCII码)3. 08H号功能调用;从键盘输入一个字符;功能号 08 → AH;入口参数:无INT 21H ;等待按键,按下一个键则该句执行完,;字符不回显;出口参数:AL中有键入的字符(ASCII码)4. 02H号功能调用;在显示器上显示一个字符(功能号=2);功能号 02H → AH;入口参数:要显示的字符(ASCII码)→DLINT 21H;占用寄存器:AL调用21H中断的02号功能时,当DL中置入00(或20H)时即可显示一个空格,必须注意,用DOS 调用显示字符,当ASCII码为 07H、08H、09H、0AH和0DH时,不会显示与之对应的字符,DOS分别将这些ASCII码解释为振铃(BEL)、退格(BS)、制表(TAB)、换行(LF)和回车(CR)的控制符,这时屏幕上不会有字符显示,仅仅是执行控制码所表示的操作。
所以当按递增顺序显示ASCII码时,应在显示这些控制码的地方显示空格,否则显示格式不对。
另外,用DOS调用时,应用控制码0AH和0DH分别控制换行和回车操作。
三.上机过程和方法此程序的功能很简单,目的是为了说明上机过程和实验方法。
首先,对书写好的源程序进行编辑,汇编及连接,生成可执行的EXE文件。
然后对EXE文件进行动态调试,排除错误,最终形成一个完全正确的程序。
1.建立源程序.ASM为了使大家对标准汇编语言程序结构有一个了解,并牢固掌握DEBUG调试程序的应用。
在这里给出上面实验任务的程序清单。
程序1是一个标准的汇编语言程序,共有三个段:数据段、堆栈段及代码段,在以后的编程中可以仿照这一结构。
程序1:双字节数相加DATA SEGMENT ;define data segmentDATA1 DW 1234HDATA2 DW 5678HSUM DW ?DATA ENDSSTACK SEGMENT PARA STA CK ‘STACK’;define stack segmentDW 100 DUP (?)TOP LABEL WORDSTACK ENDSCODE SEGMENT ;define code segmentASSUME CS: CODE,DS:DATA,SS:STACKSTART:MOV AX, DATA ;set DS register to current data segmentMOV DS, AXMOV AX, STACK ;set up stack SS and SP registMOV SS, AXMOV SP, OFFSET TOPMOV AX, DATA1ADD AX, DATA2MOV SUM, AXMOV AH,4CH ;return to DOSINT 21HCODE ENDS ;end of code segmentEND START ;end assembly2.汇编生成 .OBJ 文件E:>MASM add.asm↙Object filename[文件名.OBJ]↙Source listing[NUL.LST]↙Corss refernce[NUL.CRF]↙0 Warning Errors0 Sever Errors宏汇编程序MASM对.ASM文件进行汇编,生成目标文件.OBJ。
汇编过程中也可以生成打印文件.LST和交叉索引文件.CRF,如果需要.LSL和.CRF文件时,只要在上述汇编过程中键入相应文件名即可。
汇编结束时会显示警告错误的个数(Warning Errors)和严重错误的个数(Severe Errors),这两种错误属于.ASM文件中的语法性错误。
若出现错误应使用EDIT对.ASM文件进行修改,修改之后再进行汇编直至错误数为零时方可进行下一步操作。
3.连接生成.EXE文件↙E:>LINK add↙Run file[ .EXE]↙List file[NUL.MAP]↙Libraies[.LIB]↙注意:使用LINK命令时只键入主文件名,不能带扩展名。
4. 启动DEBUG对.EXE文件进行调试DEBUG是DOS提供的一种调试软件。
它可用于检查修改存储单元和存储器的内容,装入及运行用户程序。
启动DEBUG时,可以指定被调试文件,也可以先不指定被调试文件。
如果指定了文件名,DEBUG 启动后会把指定的文件装入内存。
例如,要调试文件ADD.EXE,只要键入:E:>DEBUG ADD.EXE↙―这时已进入DEBUG状态,提示符为一短横线“―”,可用各种命令对ADD.EXE进行操作。
如果在启动DEBUG时,未指定被调试文件,进入DEBUG后要用N和L命令将被调试文件装入内存。
例如:E:>DEBUG ↙;启动DEBUG―N ADD.EXE ↙;指定ADD.EXE文件―L ↙;装入被指定的文件―(1)对ADD.EXE文件进行反汇编—U命令―U CS:0000↙1501: 0000 B8F314 MOV AX, 14F3.....上述命令从CS段偏移地址0000开始反汇编32个字节。
在以上的反汇编清单中,最左一列是程序的段地址,第二列是偏移地址,然后依次是指令的机器码与助记符。
―U↙在32个字节的指令代码显示完之后,可再次使用U命令对后续代码进行反汇编,在此,U命令之后省略了地址,则从上一个U命令的最后一条指令的下一个字节开始反汇编32个字节。
可反复使用上述两种U命令格式,将原程序清单与反汇编清单进行对比分析,然后回答下列问题:问题1:ADD.EXE装入内存后,其数据段的段地址是。
在未运行ADD.EXE程序前,数据段的段地址是否已装入到DS寄存器中?(请选择回答:是/否)。
问题2:反汇编清单中倒数第一行(按实际显示行)是不是ADD.EXE程序中的指令?(请选择:是/不是)。
G ―D 数据段段地址:偏移地址(0000)D命令从给定地址开始连续显示内存单元中的数据,每行显示16个字节,每行的显示格式为段地址:偏移地址16个字节数据及各字节数据所对应的ASCII码。
若D命令中没有给出地址,则从上一个D命令所显示的最后一个字节的下一个字节开始显示。
合理使用D命令,分析所显示的信息并填写表1-1。
(3)运行程序—G命令―G = CS:0000 001B↙用G 命令不能运行最后一条指令RET(RETF), 因为此时用G 命令的方式返回DOS 其结果不可预测。
为此在执行ADD.EXE 时,可将RETF指令的地址(001B)设置为断点,当执行到该指令时便会停止执行。
用G 命令执行完程序后再使用D 命令显示内存单元的内容,填写表1-2中各项数据和运行结果,并分析结果是否正确。
(4)检查寄存器内容—R命令―RR命令会显示/修改CPU 所有寄存器的内容,并给出程序执行前后各标志位的当前状态。
在此,不再列出执行情况。
请用R命令显示CPU 寄存器的内容,填写表1-3。
表1-3 有关寄存器内容寄存器名 CS DS IP AX BX CX SI DI内容(5)退出 DEBUG—Q命令―Q↙Q 命令后退出DEBUG,返回DOS。
实验二串处理程序一.实验目的1.进一步使用DEBUG的调试命令,达到熟练掌握的目的。
2.学习串处理程序的设计方法,牢固掌握串操作指令及其用法。
二.实验任务一字符串传送编写程序,建立数据段DATA,将你的姓名(汉语拼音)及学号存入数据段的BUFFER1区域,然后利用程序将BUFFER1区域中的字符串(姓名及学号)依次传送到从BUFFER2开始的内存区域中去。
1. 编程提示数据段可以定义为两个段:源数据区定义为数据段,目的数据区定义为附加段。
DATA SEGMENTBUFFER1 DB ‘WANG HUAN 01982001’M EQU $-BUFFER1DATA ENDSEXTRA SEGMENTBUFFER2 DB M DUP (?)EXTRA ENDS串的传送可用MOVSB指令来实现,注意,MOVSB要求DS与SI寄存器配合使用,ES与DI配合使用。
另外,用CX中的计数值可控制MOVSB指令的重复次数。
指令格式为: REP MOVSB2.实验要求及问题(1)编写程序,在DEBUG下运行并观察结果后填写表3-1。
表3-1 反汇编清单中所反映的相关信息*注:最后一条指令是对应于代码段中最后一条指令(2)在未执行程序之前,用D命令显示内存区域及其中的内容,填写表3-2。
表3-2 未执行程序前的数据区内容(3)执行程序以后用D命令显示内存区的内容,如表3-3。
表3-3 执行程序之后的数据区内容(4)用R命令检查寄存器的内容如表3-4。
寄存器名 CS DS IP AX BX CX SI DI内容三.实验任务二字符串显示编写程序,建立数据段DATA,将你的姓名(汉语拼音)及学号存入数据段的BUFFER1区域,然后利用程序将BUFFER1区域中的字符串(姓名及学号)显示到屏幕上。
例如,王华同学的学号是08311052,则BUFFER区域中的字符串应为BUFFER DB ‘wang hua 08311052’程序运行后屏幕上应该显示 wang hua 08311052实验三分支程序设计一.实验目的1.掌握分支程序的设计方法。