汇编语言实验二
实验二拆字、拼字程序

班级:2学号:姓名:成绩:实验二拆字、拼字程序一实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。
二实验内容1.把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。
ORG 0660HSE02: MOV DPTR,#2000HMOVX A,@DPTRMOV B,A;(2000)→A→BSW AP A;交换ANL A,#0FH ;屏敝高位INC DPTRMOVX @DPTR,A;送2001HINC DPTRMOV A,BANL A,#0FH ;(2000)内容屏敝高位MOVX @DPTR,A;送2002HSJMP $END2. 把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节ORG 0680HSE03: MOV DPTR,#2000HMOVX A,@DPTRANL A,#0FH ;(2000H)内容屏敝高位SW AP A;交换MOV B,A;保存INC DPTRMOVX A,@DPTR ;(2001H)内容送AANL A,#0FH ;屏敝高位ORL A,B ;或INC DPTRMOVX @DPTR,A;送2002HSJMP $END三实验步骤编译、装载程序,以连续或单步方式运行程序,检查2000~20FFH中执行程序前后的变化。
四思考1.将2000的高低位分别送入3000H、3001H的高位, 3000H、3001H低位清零;ORG 0660HSE02: MOV DPTR,#2000HMOVX A,@DPTRMOV B,A;(2000)→A→BSW AP A;交换ANL A,#0FH ;MOV DPTR,#3000HMOVX @DPTR,A;送3000HINC DPTRMOV A,BANL A,#0FHMOVX @DPTR,A;送3001HEND2.把片内20H,21H的高位拼在一起送到片内30H单元。
汇编语言实验报告

合肥工业大学实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一. 实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二. 实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三. 实验过程和程序基础题:1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
附加题:1. 从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x2. 完成BX中1的个数的统计。
3. 用串操作指令将DS:0000开始20个字节初始化为:0CCH。
并将这20个字节的内容复制到其后的20个字节里。
四. 实验结果(包括必要的截图)基础题 1:基础题 2:附加题 1:附加题 2:附加题 3:五. 实验体会1. 在汇编语言中,变量的其实都是地址。
2. 在Debug中,数值都是16进制的。
3. 在读写内存中的数据时,必须指出数据类型是byte还是word。
汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的1、掌握分支程序、循环程序的设计方法。
2、熟悉DEBUG程序的使用方法。
3、掌握汇编语言程序的编辑、汇编、连接以及调试过程。
二、实验内容1、编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)。
2、编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块重叠问题)。
三、实验准备1、预习数据传送指令,熟悉分支和循环程序设计方法。
2、预习DEBUG调试程序的使用方法。
3、根据实验内容要求,编写好实验源程序。
四、实验步骤1、用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。
2、汇编、连接源程序,产生.EXE可执行文件。
3、运行程序。
(1) 进入DEBUG。
打入DEBUGT MYPROG.EXE。
MYPROG为所编程序的文件名。
(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。
如果执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,则执行下一步。
(3) 检查程序。
在程序中设置若干断点,以便杳出错误所在。
(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错误之处。
五、实验报告要求1、列出程序清单,并给出程序流程图。
2、总结实现数据传送的几种方法,指出它们的区别。
开始3、分析实验中所遇到的一些问题,分析错误原因。
4、说明本实验中是如何使用DEBUG进行调试的。
CX、SI、DI置初值六、流程图勤开始设置增量方式CX、SI、DI置初值保存SI内容AL [SI] SI SI+源块长度[DI] AL N SI>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。
02实验二 ARM汇编语言程序设计

实验二 ARM汇编语言程序设计一、实验目的1.了解ARM汇编语言的基本框架,学会使用ARM的汇编语言编程2.掌握ARM汇编指令二、实验设备1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真器电缆。
2. PC操作系统WIN98或WIN2000或WINXP, ADS1.2集成开发环境,仿真器驱动程序。
三、汇编语言简介1.ARM汇编的一些简要的书写规范ARM汇编中,所有标号必须在一行的顶格书写,其后面不要添加“:”,而所有指令均不能顶格书写。
ARM汇编对标识符的大小写敏感,书写标号及指令时字母大小写要一致。
在ARM汇编中,ARM指令、伪指令、寄存器名等可以全部大写或者全部小写,但不要大小写混合使用。
注释使用“;”号,注释的内容由“;”号起到此行结束,注释可以在一行的顶格书写。
详细的汇编语句及规范请参照ARM汇编的相关书籍、文档。
2. ARM汇编语言程序的基本结构在ARM汇编语言程序中,是以程序段为单位来组织代码。
段是相对独立的指令或数据序列,具有特定的名称。
段可以分为代码段的和数据段,代码段的内容为执行代码,数据段存放代码运行时所需的数据。
一个汇编程序至少应该有一个代码段,当程序较长时,可以分割为多个代码段和数据段,多个段在程序编译链接时最终形成一个可执行文件。
可执行映像文件通常由以下几部分构成:◆一个或多个代码段,代码段为只读属性。
◆零个或多个包含初始化数据的数据段,数据段的属性为可读写。
◆零个或多个不包含初始化数据的数据段,数据段的属性为可读写。
链接器根据系统默认或用户设定的规则,将各个段安排在存储器中的相应位置。
源程序中段之间的相邻关系与执行的映象文件中的段之间的相邻关系不一定相同。
3. 简单的小例子下面是一个代码段的小例子AREA Init,CODE,READONLYENTRYLDR R0, =0x3FF5000LDR R1, 0x0fSTR R1, [R0]LDR R0, =0x3F50008LDR R1, 0x1STR R1, [R0]……END在汇编程序中,用AREA指令定义一个段,并说明定义段的相关属性,本例中定义了一个名为Init的代码段,属性为只读。
实验2-用户登录验证程序的实现

P_MODULE: MOV AH,2 ;换行 MOV DL,0AH INT 21H
MOV AH,09H ;DOS显示提示字符串 MOV DX,OFFSET PASSWORD INT 21H
MOV BX,OFFSET BUF1 MOV CX,LLL MOV COUNT,3
五、支撑毕业要求指标点
目标 3.1 使学生了解微型计算机硬件结构和微型计算机工作原理,掌握 Intel X86 指令系统。使学 生能够将掌握的软硬件相关工程基础知识,用于分析微型计算机及应用领域的相关工程问题。 目标 3.2 使学生掌握汇编语言程序设计方法,具备汇编语言程序开发能力,能够根据实验方案,配置 实验环境、开展实验,进行数据分析与处理,综合实验结果以获得合理有效的结论。
U_MODULE: ;用户名模块
3
MOV AH,09H ;DOS显示字符串 MOV DX,OFFSET MESG1 ;取偏移地址 INT 21H
MOV AH,0AH ;等待从键盘输入的字符串(在屏幕上显示),并保存在缓 冲区
MOV DX,OFFSET BUF;DX=缓冲区首地址 INT 21H
;判断用户名是否正确 MOV DI,OFFSET BUF+2 MOV SI,OFFSET USER CLD
10
六、指导教师评语 (含学生能力达成度的评价)
成绩
批阅人
日期
评分项 评 遵守实验室规章制度
学习态度
算法思想准备情况
程序设计能力
分
解决问题能力
课题功能实现情况
算法设计合理性
算法效能评价
回答问题准确度
汇编语言实验二查找匹配字符串

汇编语言实验二查找匹配字符串一、目的查找匹配字符串SEARCH二、实验内容程序接收用户键入的一个关键字以及一个句子。
如果句子中不包含关键字则显示‘NO match!’;如果句子中包含关键字则显示‘MATCH’,且把该字在句子中的位置用十六进制数显示出来。
流程图N YY Y输入关键字结束关键字长度=0输入句子句子长度<关键字长度Y保存关键字长度到cx ,cx 入栈,保存总循环次数(句子长度-关键字长度+1)到al ,将句子的首地址放进bx(作为基址寄存器) si=di=0(变址寄存器)开始比较[bx+di]与[si]是否相等si+1,di+1,cx-1(同时指向下一个字符)YN bx+1(句子指向下一个字符) cx 出栈,再入栈,si,di 清零,al-1 cx 是否为0N 匹配完成,调用子程序输出al 是否为0 不匹配,输出三、设计和编码DATA SEGMENTmess1 DB'Enter keyword:','$'mess2 DB'Enter Sentence:','$'mess3 DB'Match at location:','$' mess4 DB'NOT MATCH.',13,10,'$' mess5 DB'H if the sentence',13,10,'$'change DB 13,10,'$'stoknin1 label bytemax1 db 10act1 db?stokn1 db 10 dup(?)stoknin2 label bytemax2 db 50act2 db?stokn2 db 50 dup(?)DATA ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODE SEGMENT;*************************************代码段main proc farassume cs:code,ds:data,es:dataSTART:push dssub AX,AXsub BX,BXsub DI,DIsub SI,SIpush AX ;为返回dos并清空后面要用到的寄存器MOV AX,DATAMOV DS,AXLEA DX,mess1MOV ah,09INT 21h ;输出Enter keywordLEA DX,stoknin1MOV ah,0ah ;用21号中段的0ah号功能获取关键字INT 21hcmp act1,0je exit ;如果为空直接退出程序a10:;********************************输入Sentence并判断LEA DX,changeMOV ah,09INT 21h ;输出回程,换行LEA DX,mess2MOV ah,09INT 21h ;输出Enter Sentence:LEA DX,stoknin2MOV ah,0ahINT 21h ;用21号中段的0ah号功能获取句子MOV AL,act1CBWMOV CX,AX ;保存关键字长度到cxPUSH CX ;cx入栈MOV AL,act2cmp AL,0je a50 ;保存句子长度到al,若句子为空则跳转显示not match SUB AL,act1js a50 ;若句子长度小于关键字长度,则跳转显示not match INC ALCBWLEA BX,stokn2 ;将句子的首地址放进BXMOV DI,0MOV SI,0a20:;****************************************比较,内循环MOV AH,[BX+DI]CMP AH,stokn1[SI] ;遇见字符不相等就跳转到a30jne a30INC DIINC SIDEC CX ;没遇到一个相等的字符,cx-1,cx不为0则比较下一个字符,当cx为0是说明关键字比较完CMP CX,0je a40jmp a20a30:;*****************************************外循环,BX+1,清空si,di继续内循环比较INC BXDEC ALcmp AL,0je a50MOV DI,0MOV SI,0POP CXpush CXjmp a20a40:;*****************************************match,将bx减去句子的首地址加一得到关键字所在位置,调用二进制转十六进制子函数将位置输出SUB BX,offset stokn2INC BXLEA DX,changeMOV ah,09INT 21hLEA DX,mess3MOV ah,09INT 21hCALL btohLEA DX,mess5MOV ah,09INT 21hjmp a10;****************************************二进制转换十六进制btoh PROC NEARMOV CH,4rotate: MOV CL,4ROL BX,CLMOV AL,BLand AL,0fhadd AL,30hcmp al,3ahjl printitadd al,7hprintit:MOV dl,alMOV ah,2int 21hdec chjnz rotateretbtoh endpa50:;*****************************************显示not matchLEA DX,changeMOV ah,09INT 21hLEA DX,mess4MOV ah,09INT 21hjmp a10exit:retmain endpCODE ENDSEND START 四、运行结果及分析五、实验小结六、附录(选)。
汇编语言程序设计实验二及答案

实验二:汇编语程序设计一、实验目的旨在通过实验使同学了解汇编语言的程序结构和编程方法,可以编写出顺序程序、分支程序和一般的循环程序,并学会修改和调试方法。
二、实验环境MASM、LINK、DEBUG或包含此软件的相关软件三、实验内容1.1、从FIRST开始的100个单元中存放着一个字符串,结束符为$。
编写一个程序,统计该字符串中字母‘A’的个数。
DATA SEGMENTFIRST DB 'AGHI K…$’ ;定义字符串,结束符为$NUMBER DB ? ;结果存放单元DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX,DATA ;建立数据段的可寻址性MOV DS, AXMOV BL,0 ;BL用作统计计数器LEA DI,FIRST ;取字符串首址NEXT: MOV AL, [ DI] ;取一个字符INC DI ;指向下一个字符CMP AL,’$’ ;与结束符’$’比较JE EXIT ;等于,搜索完结束CMP AL , 'A ;与字符‘A’比较JNE NEXT ;不等于。
不统计INC BL ;找到,计数IMP NEXT ;继续EXIT: MOV NUMBER,BLMOV AH,4CHINT 21HCODE ENDSEND START2.编程判断输入的ASCII码字符时数字还是字母,并将判断结果分别以“D”和“L”显示出来。
解:用宏实现字符显示。
程序如下:DISPLAY MACRD CHAR;显示字符宏定义MOV DL,CHARMOV AH,02HINT 21HENDMCODE SEGMENTASSUME CS: CODESTART : MOV AH, 0lH ;输人一个ASCI I码字符INT 21 HCMP AL, '0’JC ERROR ;非数字和字母,转ERROR处理CMP AL, '9'JA NEXT ;非数字,转NERTDISPLAY 'D' ;数字。
实验二、1简单并行接口

int 21h
mov ah,06 mov dl,0ffh int 21h jnz exit je start exit: mov ah,4ch int 21h code ends end 244程序流程图 ;若无,则转start ;返回DOS ;是否有键按下
八、实验结果
并行输出接口实验结果 并行输入接口实验结果
保存时输入自命名的源程序“XXX.ASM ”
为扩展名)
(“.ASM”
在“Alt+F”中,选择“EXIT ”退出文本编辑环境
3
图1
图2
使用汇编程序MASM.EXE (微软工具),对 源程序进行汇编,生成OBJ文件。 C:\> MASM (进入汇编环境) Source filename [.ASM]: xxx.asm
;返回DOS
code segment assume cs:code
start:
mov dx,2a0h
in al,dx mov dl,al mov ah,02
;从2A0输入一数据
;将所读数据保存在DL中 ;显示ASCII为DL的数据
int 21h
mov dl,0dh int 21h mov dl,0ah ;显示换行符 ;显示回车符
3
使用连接程序LINK.EXE (微软工具),对 OBJ文件进行连接。只有正确的OBJ文件,才能进 行连接操作。将OBJ文件与库函数或其他目标程序
进行连接成可执行的目标程序-EXE文件。
C:\> LINK (进入连接环境) Object Modules [.OBJ]: xxx.obj Run File [XXX.EXE]: List File [NUL.MAP]: Libraries [.LIB]: Warning: No STACK segment (忽略) There was 1 error detected. C:\> XXX.EXE (执行程序)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
福建农林大学计算机与信息学院实验报告
系:计算机专业:计算机年级:10
姓名:朱泽华学号:102260017020 实验室号__田513 计算机号102260017020 实验时间:指导教师签字:成绩:
实验二DEBUG的使用
1.实验目的和要求
(1)学习使用DEBUG的命令;
(2)使用DEBUG命令在数据段中查看程序运行的结果;
(3)利用DEBUG运行简单的程序段。
2.实验环境
IBM—PC机及其兼容机
实验的软件环境是:
操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录
1)输入程序观察寄存器变化使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。
注意用T命令执行时,CS: IP寄存器的内容
使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。
注意用T命令执行时,CS: IP寄存器的内容
MOV AX, 4E20
ADD AX, 1416
MOV BX, 2000
ADD AX, BX
MOV BX, AX
ADD AX, BX
MOV AX, 001A
MOV BX, 0026
ADD AL, BL
ADD AH, BL
ADD BH, AL
MOV AH, 0
ADD AL, BL
ADD AL, 9C
2)下列程序单步运行,注意AL,BX,CX寄存器的变化,并观察数据段字母的变化。
如果是将小写字母改成大写字母带注释的语句该如何修改?
DSEG SEGMENT
MSG1 DB ‘abc’
DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS: DSEG
START: MOV AX, DSEG
MOV DS, AX
LEA BX, MSG1
MOV CX, 3
S: MOV AL, [BX]
AND AL, 11011111B ;将AL中的ASCII码的第5位置0,
SUB AL,20H ;变成大写字母。
MOV [BX], AL
INC BX
LOOP S
MOV AL, 0
MOV AH, 4CH
INT 21H
CSEG ENDS
END START
3)程序的跟踪执行操作
在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。
那么如何查看程序的运行结果呢?
程序执行过程的跟踪操作步骤如下:
(1)在DOS下输入:DEBUG 文件名.EXE
(2)在DEBUG提示符下输入U命令
如果程序中有数据段,可以看到反汇编后第一句可执行语句为: A 地址:B 地址 MOV AX, K 地址 如:1261:0000 MOV
AX, 1260
其中:K 地址就是数据段的段寄存器内容,A 地址为代码段段寄存器地址,B 地址为程
序第一条指令的偏移地址。
(3)可以用T 命令单步执行指令,执行到 MOV AH, 4CH 时结束,也可以用G 命令
执行整个程序,输入:G=B 地址(如:G=0000) (4)用D 命令查看程序执行后数据段的变化 输入:D K 地址:0 (如:D1260:0)
在显示的数据中,对照源程序或LST 文件查看结果所在的偏移地址的内容。
4)输入下面的程序,按实验一和上面的步骤运行一遍。
这是一个两个数相与的程序。
结果存放在MSG2单元中,偏移地址为?值为多少?
DSEG
SEGMENT
MSG1 DW 7856H, 2038H MSG2 DW ? DSEG ENDS
CSEG
SEGMENT
ASSUME
CS: CSEG, DS: DSEG
START: MOV
AX, DSEG
MOV DS, AX MOV AX, MSG1 AND AX, MSG1+2 MOV MSG2, AX MOV AL, 0 MOV AH, 4CH
INT
21H
CSEG ENDS
END
START
3.编写调试下面的程序,用DEBUG 查看数据段中的结果
1))/()510*)((Y X X W Z ++-=,X ,Y ,W 为字节类型变量,结果存于Z 单元,
写出数据段和代码段。
2)X ,Y 为字节类型数,求16/)2*)(8*)((Y X Y X Z --+=,写出完整的数据段和
代码段,不用乘除指令。
4.算法描述及实验步骤
第一题:
(1)在doc 下直接输入debug
(2)在debug提示符下输入A,然后按回车键
(3)页面自动出现一组地址,分别为段地址和偏移地址,直接在提示符后输入单条程序
(4)按回车键,出现第二组地址,直接按回车键
(5)在提示符下输入T,执行第一条指令
(6)重复(2)、(3),输入第二条程序,直至所有指令单步执行结束
第二题
(1)编写源程序,用记事本输入程序,并存储为源程序(保存在masm目录下),扩展名更改为1.asm
(2)对源程序进行汇编、连接
操作如下:
i.在dos状态下,进入masm目录
ii.输入命令:masm
iii.在系统出现的提示中输入:
Source filename [.asm]:输入1
Object filename[1.obj]:回车键
Source listing [nul.lst]:输入1,生成.lst文件
Cross-reference [nul.crf]:回车键
iv.出现提示出错,对源程序代码进行修改,重复执行以上步骤
v.输入:link 1.asm
vi.在系统出现的提示中输入:
Run file [1.exe]:输入1
List file[nul.map]:回车键
libraries[.lib]:回车键
vii.出现“no stack segment”警告,不理会。
生成了1.exe可执行文件
(3)程序的跟踪执行操作如下
i.在dos下输入:debug 1.exe
ii.在debug提示符下输入u命令
iii.用t命令单步执行指令
iv.用d命令查看程序执行后数据段的变化
第三题
(1)编写源程序,用记事本输入程序,并存储为源程序(保存在masm 目录下),扩展名更改为2.asm
(2)对源程序进行汇编、连接
操作如下:
viii.在dos状态下,进入masm目录
ix.输入命令:masm
x.在系统出现的提示中输入:
Source filename [.asm]:输入2
Object filename[1.obj]:回车键
Source listing [nul.lst]:输入2,生成.lst文件
Cross-reference [nul.crf]:回车键
xi.出现提示出错,对源程序代码进行修改,重复执行以上步骤
xii.输入:link 1.asm
xiii.在系统出现的提示中输入:
Run file [1.exe]:输入1
List file[nul.map]:回车键
libraries[.lib]:回车键
xiv.出现“no stack segment”警告,不理会。
生成了1.exe可执行文件
(3)程序的跟踪执行操作如下
v.在dos下输入:debug 1.exe
vi.在debug提示符下输入u命令
vii.用t命令单步执行指令
viii.用d命令查看程序执行后数据段的变化
(4)打开2.lst查看msg2的偏移地址和值
5.调试过程
第二题
汇编生成.lst文件时出错
对源程序的代码错误进行修改,之后汇编完成
连接生成.exe时出错
删除错误语句,连接完成
6. 实验结果
第一题
单步执行指令
第二题
T单步执行结果
第三题
U命令反汇编
T命令单步执行
D命令查看数据段变化
由2.lst可知msg2的偏移地址为0004H,值为? 第四题
7. 总结
对上机实验结果进行分析、上机的心得体会及改进意见。
附录:。