汇编实验三数据串传送和查表程序
北京理工大学汇编语言实验报告实验三字符串操作实验

北京理工大学汇编语言实验报告实验三字符串操作实验实验三字符串操作实验一、实验目的1)熟悉串操作指令的功能与应用;2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序;3)了解汇编语言字符串处理基本流程;二、实验软硬件环境1)硬件环境:惠普64位一体化计算机及局域网; 2)软件环境:windows 8,红蜘蛛管理系统,MASM for Win dows三、实验相关知识1)字符串操作流程SI寄存器保存源串首地址;DI寄存器保存目的串首地址;CX寄存器保存字符串长度;CLD或STD指令设置字符串处理方向;2)重复前缀指令重复次数由计数寄存器CX中存放的值决定,指令每重复执行一次,计数器CX中值减1,当CX 中值减至0时,停止重复执行,继续执行下一条指令。
寄存器的E内容条件为复前罡重复与操作直配合工作的字符串处理指令有MOVSSTOS^ LODS当REPE/REP判断计数寄存器的内容CX是否为0或ZF=O(即比较的两个操作数不等)亠只要满足一个则重复执行结束,否则继续执行。
可以与REPE/REP配合工作的串指令有CMP和SCAS0或體茴比较P判个操数数相等的内容要满足一个则重复执行结束,否则继续执行。
可以与REPE/REP配合工作的串指令有CMPS口SCAS3)字符串操作指令lodsb、lodsw :把DS:SI 指向的存储单元中的数据装入AL或AX然后根据DF标志增减SI ;stosb、stosw :把AL 或AX 中的数据装入ES:DI指向的存储单元,然后根据DF标志增减DI ;movsb movsw把DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF 标志分别增减SI和DI ;scasb、scasw:把AL或AX中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI ;cmpsb cmpsw把DS:SI指向的存储单元中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI ;rep :重复其后的串操作指令。
汇编串操作指令的使用

串操作指令的使用一、串操作指令概述所谓串就是内存中一段地址相连的字节或字。
串操作就是对串中各项数据进行某种运算,也叫数据块操作。
8086/8088有5种基本串操作:⏹MOVS(Move string)串传送指令⏹CMPS(Compare string)串比较指令⏹SCAS(Scan string)串扫描指令⏹LODS(Load from string)从串取指令⏹STOS (Store in to string)存入串指令可以使用3种重复前缀:⏹REP(Repeat)无条件重复⏹REPE/REPZ(Repeat while equal/zero)相等/为零则重复⏹REPNE/REPNZ(Repeat while not equal/not zero)不相等/不为零则重复二、串操作指令详解★MOVS 串传送格式:MOVS dest,srcMOVSB(字节传送)MOVSW(字传送)功能:把DS:SI所指向的内存单元中的一个字或字节的内容取出复制到ES:DI所指向的字或字节内存单元中。
同时SI±1、DI±1或SI±2、DI±2,方向标志DF=1进行加运算,DF=0进行减运算;字节传送加减1,字传送加减2。
说明:☆单条MOV指令不能完成存储单元之间的数据传送;MOVS指令就是为解决内存储单元之间数据传送而设置的。
☆所涉及到的源内存单元和目的内存单元的地址分别存放在DS:SI和ES:DI中。
✧MOVS串传送指令不影响标志寄存器。
★LODS 从串取指令格式:LODS srcLODSB (取字节)LODSW(取字)功能:把DS:SI所指向的内存单元中的字或字节内容传送到AX或AL寄存器中。
同时SI 加减1或2;方向标志DF=1进行加运算,DF=0进行减运算;字节传送加减1,字传送加减2。
说明:☆LODS指令可用于取出指定的内存单元中的内容。
✧默认目的寄存器为AX或AL寄存器。
实验三 查表及串操作(信计)

实验三串操作及查表一、实验目的:掌握串操作及查表程序设计的方法,学会编写串操作及查表程序。
二、实验题目:题目一:(题6.8)编写程序,将字符串STING1的内容复制到字符串STRING2中。
要求由子程序来实现字符串的复制,并采用寄存器来传递参数。
编程要求:1)根据功能正确切分程序,并根据题意画流程图,将主程序和子程序分别画,使得程序思路清晰,便于根据流程图编写汇编程序。
2)在编写子程序后,要对子程序说明,子程序说明是为了更好的使用子程序,便于别人使用该子程序时了解子程序的功能和调用方法,子程序说明应包括:子程序名、功能、入口参数、出口参数、执行时间等。
3)在子程序中用到的寄存器,在执行子程序之前应保存,以免破坏子程序以外的信息,执行完子程序再恢复原有信息。
编程提示:参考例题:例5-151)串传送时采用串传送指令REP MOVSD。
2)用寄存器传递的参数:字符串STRING1和STRING2的首地址,字符串STRING1的长度。
程序代码:DATA SEGMENTSTRING1 DB 'duxuejie'STRING2 DB ?N EQU($-STRING1)/4DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,NCLDMOV SI,OFFSET STRING1MOV DI,OFFSET STRING1MOV AX,DSMOV ES,AXMOV SI,OFFSET STRING1MOV DI,OFFSET STRING1MOV CX,NCLDREP MOVSWMOV AX,4C00HINT 21HCODE ENDSEND START程序结果截图思考题:1)串传送时采用串传送指令REP MOVSD,因此在使用该指令之前要设置?2)传递参数还可以用什么方法?请修改程序。
汇编语言程序设计实验指导

汇编语言程序设计实验指导【实验提要】以下列举的10个实验,都是以Intel的8086及后续系列微处理器的指令系统为核心,采用宏汇编工具MASM6. X以及调试工具DEBUG或DEBUG32,针对本教材所述内容进行相关的上机实践。
旨在帮助学生加深认识和理解理论教学知识,通过大量的上机实验熟悉8086 CPU的指令功能、用途和使用技巧,进而提高汇编语言程序设计的能力。
(带*号的为选作内容)实验一调试工具DEBUG的应用实验目的通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG的功能;2、DEBUG命令: A,D,E,F,H,R,T,U的使用;3、BCD码、ASCII码及用十六进制数表示二进制码的方法;4、寄存器: AX,BX,CX,DX,FLAGS,IP。
内容及步骤注:本次实验可以参照教材上关于DEBUG的叙述内容进行。
一、DEBUG 命令使用1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境,显示提示符 '- '。
2、用命令 F 200 220 'AB' 将'AB'的两个ASCII码循环填入内存。
注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。
3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。
4、用命令 F230 23F 12 重复上二项实验,观察结果并比较。
5、用命令 E200 41 42 43 44 45将A-E的ASCII码写入地址为200开始的内存单元中,再用D命令观察结果,看键入的十六进制数和ASCII码的对应关系。
6、用H命令检查下列各组十六进制数的和与差(补码表示):(1)56H,34H (2)23H,45H (3)AB,3045H注:输入 H 12 34 则在下一行显示0046 FFDE,即二者的补码和与差。
[课程]单片机数据传送实验报告
![[课程]单片机数据传送实验报告](https://img.taocdn.com/s3/m/a6b6bc37ae45b307e87101f69e3143323968f5a4.png)
实验三数据传送实验报告㈠实验目的1.进一步掌握程序的编辑、汇编及调试方法;2.掌握单片机内部RAM和外部RAM的数据操作;3.了解单片机系统地址分配概念。
㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.电源一台㈢实验内容及要求1.以数据表格形式在ROM中建立一个含有正数和负数的表格,数据长度为16个字节,要求放置八个正数、八个负数,正、负数应离散随机放置,不允许三个以上同类型数据连续放置,数据的具体内容自行确定;2.编制程序,将数据表格中的数据读出并按正、负数归类,正数送入首地址为40H的内部RAM中;负数送入首地址为0B000H的外部RAM中;3.将首地址为0B000H的外部RAM中的数据取出并求其绝对值,然后送入内部RAM的48H~4FH单元。
程序如下:ORG 0000HAJMP MAINORG 0060HMAIN:MOV A,#10H ;数据长度放入了累加器A中MOV R1,#0B0H ;负数所需送入的首地址高位放入R1MOV 20H,#00H ;负数所需送入的首地址低位放入20H单元中MOV R0,#40H ;正数所需送入的首地址40H放到R0中去MOV DPTR,#0A00H ;将表格开始的位置放入DPTR;以上为初始化的全部内容PUSH DPHPUSH DPLPUSH ASTART:POP APOP DPLPOP DPHPUSH A ;将A压栈,保护里面存储的数据长度10HMOV A,#00HMOVC A,@A+DPTR ;读表头地址MOV 20H,AINC DPTR ;DPTR指针加1,以读取表格中下一个数PUSH DPH ;为了保护DPTR中存储的表格地址,压栈以便于放入0B000H,存储负数PUSH DPLJUDGE:MOV A,20HRLC AJC NEGATIVE ;判断语句,标志位为1,转去N(负数);否则往下执行OPPOSITE:MOV A,20HMOV @R0,A ;正数放入到以40H为首地址的单元中去INC R0 ;进入下一个单元以存放下一个正数POP DPLPOP DPHPOP ADEC A ;数据长度减一,代表已经读取了一个数PUSH DPHPUSH DPLPUSH AJNZ START ;如果数据长度不为0,表格还未读取完毕,返回STARTSJMP END1 ;如果数据读取完毕,就跳去NEXT1NEGATIVE:MOV A,20HMOV DPH,R1MOV DPL,20HMOVX @DPTR,AINC DPTR ;0B000H加1,下一个负数存储单元MOV 20H,DPLMOV R1,DPHPOP DPLPOP DPHPOP ADEC APUSH DPHPUSH DPLPUSH AJNZ START ;和正数相同JMP NEXT1NEXT1: MOV A,#08H ;负数的数据长度放入A中MOV DPTR,#0B000H ;负数现在存储位置放入DPTRNEXT2: PUSH A ;将A压栈,保护其中负数的数据长度MOVX A,@DPTR ;读负数存储的首地址CPL A ;取反INC A ;加1MOV @R0,A ;将第一个绝对值入到48H单元(这里其实写的并不是很好,如果正数和负数的绝对值存储位置并不相连,就不可以用了)INC DPTR ;地址加1,下一个负数位置INC R0 ;进入下一个存储单元POP ADEC A ;数据长度减1JNZ NEXT2 ;负数还没读完,继续SJMP $ ;负数全部转成绝对值存储,程序结束ORG 0A00HTABLE:DB 0F0H,10H,80H,25HDB 0B2H,0A4H,30H,08HDB 0D6H,54H,01H,8FHDB 0C0H,27H,0CDH,09H运行结果:40H~47H中内容为10H,25H,30H,08H,54H,01H,27H,09H48H~4FH中内容为10H,80H,5EH,5CH,2AH,71H,50H,44H0B000H~0B007H中内容为0F0H,80H,0B2H,0A4H,0D6H,8FH,0C0H,0CDH硬件部分:A15~A12对应的选中芯片,因为B为1011,所以应该选中A14口连接到芯片CS,低电平有效,这样就成功选中芯片进行了扩展。
汇编上机实验报告

汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。
实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。
程序运行正常,输出结果与预期一致。
实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
北京理工大学汇编语言实验报告3字符串操作实验(设计性实验)

组 号:
同组搭档:
成 绩:
一、实验要求和目的
1.了解汇编语言字符串处理基本流程; 2.熟悉汇编语言字符串处理基本指令的使用方法; 3.掌握利用汇编语言实现字符串处理的程序设计方法。
二、软硬件环境
1、硬件环境:计算机系统 windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
str1 db 'fs3qas' count equ $-str1 DATAS ENDS copy segment
str2 db count dup(?) copy ends
CODES SEGMENT ASSUME CS:CODES,DS:DATAS,es:copy
START: MOV AX,DATAS MOV DS,AX mov es,dx;开始复制 mov cx,count cld rep movsb MOV AH,4CH INT 21H
这里面显示的bx=1,符合实际情况 若修改一下源代码,把字符串多加几个‘.’则结果如下:
代码中有3个‘.’运行结果中bx=3,符合实际情况,源代码题设要求
五、实验要求与提示
1、实验要求 (1)画出各程序流程图; (2)列出程序清单,加上适量注释; (3)回答思考问题; (4)记录实验结果; (5) 完成实验报告(实验材料上的内容简写,自己的工作要详尽)。 2、实验提示: A)自动获取字符串长度,可以利用地址计数器$ 表达式获得。 B)字符/字符串输入输出 主要利用 DOS 的INT 21H 系统功能调用来实现字符或字符串的输入/输出操作,其中1 号功能表示输入字符;2 号功能表示输出字符;0A 号功能表示输入字符串;09 号功能表 示 输出字符串。如果大家想现在使用可以详细查阅相关资料,在后面的课程内容和实验上会详 细学习,这里简单示例提示一下: (1)显示单个字符可以用DOS 的INT 21H 的2 号功能,将字符放在DL 寄存器中,2 号放在AH 寄存器中。 MOV AL, ’*’ MOV AH,2 INT 21H (2)数据区中的字符串应以$结尾,DS:DX=串地址;如果提前已经定义需要显示的字 符串,显示字符串可以用如下功能调用: LEA DX,STR MOV AH,9 INT 21H
汇编语言上机实验汇总

汇编语言上机实验汇总汇编语言是计算机的低级语言,主要用于编写底层程序和驱动程序。
在学习汇编语言的过程中,学生通常需要进行一定数量的上机实验。
下面是一个汇编语言上机实验的汇总。
1.实验一:环境搭建-目标:搭建汇编语言开发环境2.实验二:基本语法-目标:学习汇编语言的基本语法和指令格式-内容:编写一个简单的汇编程序,包括数据段、代码段和堆栈段,以及常用指令(例如MOV、ADD、SUB、JMP等)的使用。
3.实验三:寄存器和内存操作-目标:熟悉汇编语言中的寄存器和内存的操作-内容:编写一个汇编程序,通过MOV指令将数据从内存中加载到寄存器中,然后进行运算,并将结果存储回内存。
4.实验四:条件分支和循环-目标:掌握汇编语言中的条件分支和循环结构-内容:编写一个汇编程序,使用条件分支指令(例如CMP、JE、JNE 等)实现一个简单的判断语句;然后使用循环指令(例如LOOP)实现一个简单的循环结构。
5.实验五:子程序和参数传递-目标:学习如何创建和调用子程序,并传递参数-内容:编写一个汇编程序,其中包含一个子程序,该子程序接受两个参数并返回它们的和。
然后在主程序中调用该子程序,并输出结果。
6.实验六:中断和异常处理-目标:了解中断和异常处理机制,并在汇编程序中处理中断或异常-内容:编写一个汇编程序,其中包含一个中断处理程序,当发生特定的中断时,该处理程序将执行一些特定的操作。
7.实验七:串操作和文件操作-目标:学习汇编语言中的串操作和文件操作-内容:编写一个汇编程序,使用串操作指令(例如MOVS、LODS、STOS等)操作字符串;然后使用文件操作指令(例如OPEN、READ、WRITE 等)读取或写入文件。
8.实验八:图形和音频处理-目标:了解汇编语言中的图形和音频处理- 内容:编写一个汇编程序,使用图形库(例如BGI、OpenGL、DirectX)绘制简单的图形或运行一个音频文件。
这些上机实验可以帮助学生逐步掌握汇编语言的基本知识和技能,并为以后的高级汇编语言编程打下基础。
实验三 数据串传送和查表程序

实验三数据串传送和查表程序实验三数据串传送和查表程序实验目的通过实验掌握下列知识:1、利用简化段定义方法实现程序结构定义;2、利用DOS的21H号中断调用完成输入输出;3、查表法和查表指令XLAT;4、数据串传送指令MOVS及重复前辍REP;5、掌握EQU和DUP伪指令的用法。
实验内容及步骤一、利用查表方法显示内存单元的内容1、编辑下列程序:.model small.stack.datastr1 db 'ABCDEFGHIJ' ;待显示的内存区内容str2 db 'Please input the number you will display:',10,13,'$'.code.startupmov ah,9mov dx,offset str2int 21h ;显示STR2字符串的内容,即提示信息mov ah,1int 21h ;输入待显示的字符序号(0-9)mov bx,offset str1sub al,30hxlat ;查STR1表,对应序号的字符ASCII码进入ALmov dl,almov ah,2int 21h ;显示对应字符.exit 0End2、程序汇编通过后,在运行过程中输入0-9的任意数字,显示STR1字符串中对应位置的字符。
3、在DEBUG环境中,用P命令调试执行该程序,察看AL寄存器的变化情况及结果的输出,分析其执行过程。
二、数据串传送程序1、编辑下列程序:.model small.stack.datastr1 db 'abcdefghijklmn' ;源串定义lengs equ $-str1str2 db lengs dup (?),'$' ;目标串.code.startupmov ax,dsmov es,ax ;使DS和ES为同一个段cldlea si,str1lea di,str2mov cx,lengsrep movsb ;串复制mov ah,9mov dx,offset str2int 21h ;显示目标串.exit 0End2、程序汇编通过后,运行程序察看输出结果3、在DEBUG环境中,用P命令调试执行该程序,察看SI、DI寄存器及相应内存单元的变化情况,分析其执行过程。
数据传送实验报告

数据传送实验报告数据传送实验报告引言:在当今信息时代,数据传送是我们日常生活中不可或缺的一部分。
无论是通过互联网传输文字、图片、音频还是视频,还是通过无线电波传送电话信号,数据传送技术的发展对于我们的生活产生了巨大的影响。
为了深入了解数据传送的原理和性能,我们进行了一系列的实验。
实验一:串行传送与并行传送的对比在这个实验中,我们选择了串行传送和并行传送作为对比对象。
首先,我们使用了两台计算机,一台作为发送端,一台作为接收端。
我们分别通过串口和并口连接两台计算机,并编写了相应的程序来进行数据传送。
结果显示,串行传送相比并行传送,传输速度较慢。
这是因为串行传送是按位逐个传输数据,而并行传送是同时传输多个位的数据。
虽然串行传送的速度较慢,但它具有更好的可靠性和稳定性,因为每个位的传输都经过了严格的校验和纠错处理。
实验二:有线传输与无线传输的对比在这个实验中,我们选择了有线传输和无线传输作为对比对象。
我们使用了两台手机,一台作为发送端,一台作为接收端。
通过有线连接和无线连接分别进行数据传输,并记录传输速度和传输质量。
结果显示,有线传输相比无线传输,传输速度更快。
这是因为有线传输不受信号干扰和传输距离限制,而无线传输需要经过信号传播和接收的过程,容易受到干扰和信号衰减的影响。
然而,无线传输具有更好的灵活性和便携性,适用于移动设备和远程通信。
实验三:不同传输介质的对比在这个实验中,我们选择了光纤传输和铜线传输作为对比对象。
我们使用了两台计算机,一台作为发送端,一台作为接收端。
通过光纤连接和铜线连接分别进行数据传输,并记录传输速度和传输质量。
结果显示,光纤传输相比铜线传输,传输速度更快且传输质量更好。
这是因为光纤传输利用光的折射原理进行信号传输,不受电磁干扰和信号衰减的影响。
而铜线传输则容易受到电磁干扰和信号衰减的影响,导致传输速度较慢且传输质量较差。
结论:通过以上实验,我们可以得出以下结论:1. 串行传送相比并行传送,虽然速度较慢,但具有更好的可靠性和稳定性。
汇编语言程序设计的实验环境及上机步骤

汇编语言程序设计的实验环境及上机步骤一、实验环境汇编语言程序设计的实验环境如下:1.硬件环境微型计算机(Intel x86系列CPU)一台2.软件环境⏹Windows98/2000/XP操作系统⏹任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等)⏹汇编程序(MASM.EXE或TASM.EXE)⏹连接程序(LINK.EXE或TLINK.EXE)⏹调试程序(DEBUG.EXE或TD.EXE)文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用TD.EXE。
二、上机实验步骤注:以下步骤适用于除汇编语言程序设计的实验一到实验四外的所有实验(实验一到实验四仅使用TD.EXE)。
1.确定源程序的存放目录建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。
如果没有创建过此目录,请用如下方法创建:通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。
请把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷贝到此目录中。
2.建立ASM源程序建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器。
下面的例子说明了用EDIT文本编辑器来建立ASM源程序的步骤(假定要建立的源程序名为HELLO.ASM),用NOTEPAD(记事本)建立ASM源程序的步骤与此类似。
在Windows中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“ C:\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。
图1 文本编辑器EDIT的编辑窗口窗口标题行显示了EDIT程序的完整路径名。
紧接着标题行下面的是菜单行,窗口最下面一行是提示行。
菜单可以用Alt键激活,然后用方向键选择菜单项,也可以直接用Alt-F打开File文件菜单,用Alt-E打开Edit编辑菜单,等等。
汇编上机实验报告

实验一认识Tddebug集成操作软件实验日志指导教师曾素华实验时间:2013 年04 月02 日学院计算机科学与技术专业计算机科学与技术班级0411005 学号2010211912 姓名李新娱实验室s401一、实验题目认识Tddebug集成操作软件二、实验目的1.熟悉汇编程序的开发过程。
2.认识Tddebug集成操作软件。
3.掌握在Tddebug集成环境中编辑、编译、连接汇编语言程序方法。
4.掌握INT 21H软件中断来调用DOS内部子程序的方法三、实验内容及说明1.实验内容:数据传送实验1)编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
参见示例出程序。
2)修改此程序,采用字符串传送指令完成。
2.实验中使用DOS功能调用(INT 21H):参见教材《32位微型计算机原理与接口技术》89页(1)显示字符串入口:AH=09H调用参数:DS:DX=串首地址,‘$’为结束字符。
(2)返回DOS系统入口:AH=4CH调用参数:AL=返回码四、实验主要步骤要求一数据传送实验1.运行Tddebug软件,选择Edit菜单编写实验程序2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
3.使用Rmrun菜单中的Run运行程序,观察运行结果。
4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。
单步执行数据传送指令后,观察各寄存器及数据区的内容。
过程如下:3)按F7单步执行,在代码区中有一个三角,表示正在执行的指令。
每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。
4)检查内存数据区的内容,关键是找出用户程序的数据段和附加段:●方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区●方法2:选择菜单View| Dump,弹出内存数据显示窗口。
汇编实验报告(三) 数据串传送和查表程序

《汇编语言程序设计》实验报告实验三数据串传送和查表程序实验目的通过实验掌握下列知识:1、利用简化段定义方法实现程序结构定义;2、利用DOS的21H号中断调用完成输入输出;3、查表法和查表指令XLAT;4、数据串传送指令MOVS及重复前辍REP;5、掌握EQU和DUP伪指令的用法。
实验内容及步骤一、利用查表方法显示内存单元的内容1、编辑下列程序:.model small.stack.datastr1 db 'ABCDEFGHIJ' ;待显示的内存区内容str2 db 'Please input the number you will display:',10,13,'$' .code.startupmov ah,9mov dx,offset str2int 21h ;显示STR2字符串的内容,即提示信息mov ah,1int 21h ;输入待显示的字符序号(0-9)mov bx,offset str1sub al,30hxlat ;查STR1表,对应序号的字符ASCII码进入ALmov dl,almov ah,2int 21h ;显示对应字符.exit 0End图 3-1 在Win-Masm中键入程序图 3-2 汇编成功2、程序汇编通过后,在运行过程中输入0-9的任意数字,显示STR1字符串中对应位置的字符。
图 3-3 运行:键入0-9数字,显示相应字符3、在DEBUG环境中,用P命令调试执行该程序,察看AL寄存器的变化情况及结果的输出,分析其执行过程。
图 3-4 D命令查看主存单元内容图 3-5 U命令查看程序图 3-6 初始化DS寄存器图 3-7 输出提示信息图 3-8 输入待显示的字符序号(0-9)图 3-9 查STR1表,对应序号的字符ASCII码进入AL图 3-10 显示对应字符图 3-11 程序运行结束二、数据串传送程序1、编辑下列程序:.model small.stack.datastr1 db 'abcdefghijklmn' ;源串定义lengs equ $-str1str2 db lengs dup (?),'$' ;目标串.code.startupmov ax,dsmov es,ax ;使DS和ES为同一个段cldlea si,str1lea di,str2mov cx,lengsrep movsb ;串复制mov ah,9mov dx,offset str2int 21h ;显示目标串.exit 0End图 3-12 键入程序2、程序汇编通过后,运行程序察看输出结果。
汇编语言实验报告(DEBUG命令)

西安财经学院信息学院《汇编语言程序设计》 实验报告实验名 DEBUG 命令,指令练习 实验 403 实验日期 2013.4.16 一、实验目的及要求熟悉和掌握汇编语言的数据传送类指令、算术指令、逻辑指令、串处理指令、控制转移指令以及处理机控制与杂项操作指令,达到准确有效地运用。
二、实验环境硬件环境:一台微型计算机;软件环境:windows 7,debug 环境,masm 三、实验内容练习dos 环境下debug 命令;指令练习 四、实验过程: 1. 进入debug 环境姓名学号 10051704 班级 计本1004班 指导教师 张娟2.R命令查看寄存器内容的命令。
可以看出,数据寄存器的内容都为0,CS代码段寄存器内容为13BB,IP为0100。
3.RF命令查看标志位寄存器内容并可以进行修改,其中不包含TF,陷阱标志位。
4.D命令查看内存单元内容,此处从内存的13BB段的第0100个单元开始显示。
5.A命令写指令,此处未写。
6.U命令将内存单元的内容以汇编指令的形式表示出来。
7.E命令修改内存单元的内容命令。
这里修改1000的内容为12,并用D命令显示修改后的结果,为12。
8.数据传送类指令(1)MOV指令将1234赋值给累加器AX:指令写在0100开始的内存单元,占用3个字节,IP指向下一条指令的地址0103。
(2)POP指令将累加器AX中的值弹出AX中的值弹出,变为0000,SP堆栈指针由原来的FFEE自动加2后变为FFF0,IP指向下一条指令的内存单元0104。
9.算数指令(以下内容在实验室操作,地址与之前做的有差别)10.算数指令(1)加法指令ADD给累加器AX 的值加上1234h在0100地址写加法指令,执行单步操作,查看到AX的值由0000h变为1234h,IP 指向下一条指令的地址0103h。
(2)减法指令SUB将累加器AX 的值减去0200h,将结果保存到AX中执行单步操作,查看AX的值为1034h,IP指向下一条指令地址0106。
数据传送程序设计

数据传送程序设计一、实验目的:1)学习数据传送的用法以及与数据有关的不同寻址方式。
2)熟悉汇编语言程序的上机运行过程。
3)学会使用DEBUG命令调试程序。
二、实验仪器:1)仪器:英特尔586配置以上电脑一台,内存512MB以上,Windowsxp操作系统。
2)软件:MASM5.0汇编软件或者EMU8086三、实验内容:D将40个字母A的字符串从源缓冲区传送到目的缓冲区。
2)将26个小写英文字母存放到数据段1偏移地址为2000H单元开始的内存中,然后转换成大写字母并传送到数据段2以3000H单元开始的存储区。
四、实验步骤:1)点击电脑的“开始”一》“运行”,输入“CMD”,翻开DOS系统界面2)通过CD命令进入MASM软件目录3)使用edit命令编辑程序(程序清单见)C:\MASM>EDITfiIename.ASM(enter)(filename可以自己随意命名)4)使用masιn和Iink命令对程序进行汇编,连接。
C:∖MΛSM>MΛSMfilename,asm(enter)C:∖MASM>linkfilename,obj(enter)5)使用Debug命令调试程序,观察调试过程中数据传输指令执行后各存放器及数据区的内容。
CΛMASM>DEBUGfilename.EXE屏幕上出现一个短划线。
为了确定我们所要设定的断点地址,常常用到反汇编命令,反汇编命令格式如下:-U;从当前地址开始反汇编用G命令来设置断点。
比方想把断点设置在30ICH处,那么如下打入命令:-G301C ;程序在012OH处停下,并显示出所有存放器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,可以从显示的存放器的内容来了解程序运行是否正确。
对于某些程序段,单从存放器的内容看不到程序运行的结果,而需要观察数据段的内容,此时可用D命令,使用格式如下:-DDS100OO;从数据段的0单元开始显示128个字节-t单步执行-R查看存放器的值-Q;退出五、程序清单:程序1:datasegment;数据段的定义source,bufferdb40dup(,Λ,)dataends;**************extrasegment;附加段的定义dest_buffer db40dup(?)extraendscodesegmentorgOlOOh;程序首地址assumecs:code,ds:data,es:extrastart:pushdssubax,axpushaxmovax,datamovds,axmovax,extramoves,axleasi,source_bufferleadi,dest_bufferCldmovex,40repmovsbmovah,4chint21hcodeendsendstart程序2:datalsegment;定义数据org2000h;变量存放数据段2000h单元source_buffer db26dup(?);预留26个节单元datalendsdata2segmentorg3000hdest_bufferl db26dup(?)data2 endsextrasegment将附加段教据送入数据段2dest_buffer2db26dup(?)extraendscodese gmentorgOlOOhassumecs:code,ds:datal,ds:data2,es:extra start:movax,datalmovds,axxiao:leasi,source_buffermovax ,,a,movex,26mov[si],axdal:incsiincaxloopxiaoleadi,dest_buffer2cldmovex,26movax,extramoves,axleasi,source_bufferIodsb;源串DS:Sl中数据送ax subax,20h;将字符串转换为大写字stosb;ax内容送ES:DIda2:loopdalmovax,data2 movds,axleadi,dest_bufferl leasi,dest_buffer2 movex,26movax,es:[si]code mov[di],axincsiincdiloop da2movax,movah,4chint21h endsend start程序2流程图六、实验结果及分析:Sa C:\Windov/s\$y$tem32\cmd.exe∙debugxp.e×eSBC AWindows ∖syitem32∖cmd.exe-debug22.exe-g0148图2程序2实险结果实验结果分析:图1中字母送入数据段及附加段以OOOOH 为偏移段首址的同时,在以1459:0030段开始的数据段也送入了相同的数据,这是因为1459:0030与145C :OoOO 对应相同的物理地址,即14590H+0030H=145C0H+0000H=145C0H o图2中显示大写字母与小写字母存放在不同数据段,这是因为程序中先将小写字母送入以偏移地址为2000H 单元开始的数据段1,此时该数据段段基址为1461H,然后编写程序将小写字母转换成大写字母送入附加段中暂存,最后将附加段中的数据传送至偏移地址为300OH 开始的数据段2,此时的段基址为1663H 。
汇编语言 串处理程序

实验三字符串处理程序
实验类型:验证性
实验目地:
、熟悉串操作指令地功能与应用
、掌握串比较、串扫描等指令地退出条件地判断和控制.
、掌握串操作指令地寻址方式及使用方法,编写常用地字符串处理程序. 实验步骤:
、进入环境
、输入命令::\\:\\保证实验过程中使用地所有命令都在当前路径直接调用、启动编辑器输入程序代码
、检查语法错误,如无错误以为后缀名保存文件(如文件名)
、运行命令生成文件
、如果出错请回到第步再纠正错误
、运行命令(此时提示没有堆栈错误请忽略)生成文件
、运行调入可执行程序(以下命令请参看第一次实验内容)
、执行反汇编
、查看程序结束地址
、运行命令运行程序
、运行和命令查看相应地内存单元和寄存器地数据是否与结果一致,如果不一致回到第步纠正错误,也可以运行命令逐条运行程序寻找错误指令位置再做修改.
实验内容:
编写程序代码统计字符串‘’中‘’出现地次数.
代码:
''
''
?
:
;***************
()
;( )
;()
;( )
;
;
;
;
;
;
;
;()
;****************。
12 汇编语言程序设计(3)-查表与散转程序设计

MOV A, R3 ;(R2R3) ← (R2R3) ×2 CLR C RLC A MOV R3, A XCH A, R2 RLC A XCH R2, A ADD A, DPL ;(DPTR) ← (R2R3) +(DPTR) MOV DPL, A MOV A, DPH ADDC A, R2 MOV DPH, A
[例4-9]求函数Y=X!(X=0,1,…,7)的值。设自变量存放在ABC单元,表 头地址为TABL,Y值为双字节存放在寄存器R2R3中,R3存放Y值低字节, 写出查表程序。
ORG EQU MOV ADD MOV ADD MOVC XCH ADD MOVC MOV SIMP DB DB END 2000H 30H A, ABC ;取待转换值 A, ABC R3, A A, # 07H ;计算偏移量 A, @A+PC ;查低字节 A, R3 A, # 04H ;计算偏移量 A, @A+PC ;查高字节 R2, A ;存结果 $ 01, 00, 01, 00, 02, 00, 06, 00 24H, 00, 20H, 01, 20H, 07, 40H, 50H
421421简单程序设计简单程序设计422422分支程序设计分支程序设计423423循环程序设计循环程序设计424424查表程序设计查表程序设计425425散转程序设计散转程序设计426426子程序设计子程序设计427427运算程序设计运算程序设计42mcs42mcs5151movcadptr查表前数据表格表头地址存入dptr所查数据送入累加器a最后movcaadptr完成查表因为dptr可以人为修改可在64kb内查表
由于使用了AJMP指令,要求 所有的处理程序入口和散转表 都必须在同一2kB范围内。
汇编语言程序设计-数据传输指令

一、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSW AP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) XADD 先交换再累加.( 结果在第一个操作数里)XLAT 字节查表转换.── BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄存器.PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令───────────────────────────────────────ADD 加法.ADC 带进位加法.INC 加1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减1.NEC 求反(以0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) CWD 字转换为双字. (把AX中的字的符号扩展到DX中去) CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令───────────────────────────────────────AND 与运算.or 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果). SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如MOV CL,04SHL AX,CL四、串指令───────────────────────────────────────DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量. Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. ) CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位. LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复. REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复. REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令───────────────────────────────────────1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为"0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为"1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态. ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置方向标志位.CLD 清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令───────────────────────────────────────DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.七、处理机控制指令:标志处理指令CLC(进位位置0指令)CMC(进位位求反指令)STC(进位位置为1指令)CLD(方向标志置1指令)STD(方向标志位置1指令)CLI(中断标志置0指令)STI(中断标志置1指令)NOP(无操作)HLT(停机)WAIT(等待)ESC(换码)LOCK(封锁)MOV(MOVe)传送指令PUSH 入栈指令POP 出栈指令XCHG(eXCHanG)交换指令XLAT(TRANSLATE)换码指令LEA (Load Effective Address)有效地址送寄存器指令LDS(Load DS with pointer)指针送寄存器和DS指令LES(Load ES with pointer)指针送寄存器和ES指令LAHF(Load AH with Flags)标志位送AH指令SAHF(Store AH into Flgs)AH送标志寄存器指令PUSHF(PUSH the Flags)标志进栈指令POPF(POP the Flags)标志出栈指令ADD 加法指令ADC 带进位加法指令INC 加1指令SUB(SUBtract)不带借位的减法指令SBB(SuVtrach with borrow)带借位的减法指令DEC(DECrement)减1指领NEG(NEGate)求补指令CMP(CoMPare)比较指令MUL(unsinged MULtiple)无符号数乘法指令IMUL(sIgned MUL tiple)有符号数乘法指令DIV(unsigned DIVide)无符号数除法指令IDIV(sIgned DIVide)有符号数除法指令CBW(Count Byte to Word)字节转换为字指令CWD(Count Word to Doble word)字转换为双字指令DAA 压缩的BCD码加法十进制调整指令DAS 压缩的BCD码减法十进制调整指令AAA 非压缩的BCD码加法十进制调整指令AAS 非压缩的BCD码加法十进制调整指令AND 逻辑与指令OR 逻辑或指令XOR 逻辑异或指令NOT 逻辑非指令TEST 测试指令SHL(SHift logical Letf)逻辑左移指令SHR(SHift logical Right)逻辑右移指令ROL(Rotate Left )循环左移指令P58ROR(Rotate Right)循环右移指令P58RCL(Rotate Left through Carry)带进位循环左移RCR(Rotate Right through Carry)带进位循环左移MOVS(MOVe String)串传送指令STOS(STOre into String)存入串指令LODS(LOad from string)从串取指令REP(REPeat)重复操作前CLD(CLear Direction flag)清除方向标志指令STD(SeT Direction flag)设置方向标志指令CMPS(CoMPare String)串比较指令SCAS(SCAn String)串扫描指令REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀IN(INput)输入指令OUT(OUTput)输出指令JMP(JuMP)无条件转移指令JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令LOOP 循环指令P70LOOPZ/LOOPE 为零/相等时循环指令LOOPNZ/LOOPNE 不为零/不相等时循环指令CALL 子程序调用指令RET(RETun)子程序返回指令CLC(CLear Carry)进位位置0指令CMC(CoMplement Carry)进位位求反指令SRC(SeT Carry)进位位置1指令NOP(No OPeretion)无操作指令HLT(HaLT)停机指令OFFSET 返回偏移地址SEG 返回段地址EQU(=) 等值语句PURGE 解除语句DUP 操作数字段用复制操作符SEGMENT,ENDS 段定义指令ASSUME 段地址分配指令ORG 起始偏移地址设置指令$ 地址计数器的当前值PROC,ENDP 过程定义语句NAME,TITLE,END 程序开始结束语句MACRO,ENDM 宏定义指令JZ OPR //结果为零转移JNZ OPR //结果不为零转移JS OPR //结果为负转移JNS OPR //结果为正转移JO OPR //溢出转移JNO OPR //不溢出转移JP OPR //结果为偶转移JNP OPR //结果为奇转移JC OPR //有进位转移JNC OPR //无进位转移。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
──学年第二学期
实验课程汇编语言学生姓名123
实验项目数据串传送和查表程序学院计算机科学技术
实验性质专业选修课班级学号
实验地点同组人数 1 第组
实验日期第周星期第节
成绩5
DOSBox-0.74
环境参数
一、实验目的及要求
二、实验原理、实验内容
三、实验仪器设备及材料
四、操作方法与实验步骤
五、实验数据记录及处理
六、实验结果分析及讨论
一、实验目的
1、堆栈。
堆栈指示器SP和堆栈操作指令PUSH。
POP。
2、段寄存器和物理地址计算。
3、查表法和查表指令XLAT。
4、数据串传送程序和数据串传送指令MOVS。
STOS及重复前辍REP。
5、循环指令ROL。
逻辑与指令AND和清方向位指令CLD。
6、伪操作指令DB。
二、实验任务
1、把实验准备(二)程序中的目的地址改为1002H,再运行此程序,看能不能把1000H开始的字符串搬到
1002H开始的地方去?
程序代码:
运行结果:
不能,因为会产生覆盖。
2、修改实验准备(二)程序以做到把1000H开始的字符串搬到1002H
开始的地方去
程序代码:
运行结果:。