汇编上机(实验二)

合集下载

汇编语言上机实验内容

汇编语言上机实验内容

实验一上机操作一、实验目的掌握汇编语言程序编辑、汇编、连接、运行以及利用DEBUG调试程序的方法。

二、实验设备PC机及相应的软件。

三、实验内容及步骤1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。

2、利用DEBUG进行程序调试,掌握常用命令的使用方法,观察运行结果。

3、汇编语言上机操作,见图1-1 汇编语言上机操作流程。

上机操作过程:开始输入cmd 确认后显示:C:\Documents and setting\Administrator>-输入 cd c:\masm 后显示:c:\masm>-c:\masm>EDIT ABC.asmc:\masm>MASM ABC;若有语法错,回EDIT下改该程序c:\masm>LINK ABC;若有错,回EDIT下改程序c:\masm>ABC若运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。

c:\masm>DEBUG ABC.exe手写源程序图 1-1 汇编语言上机操作流程汇编语言程序举例例1:将BL寄存器的内容按二进制形式显示出来。

设:(BL)=01010011B分析:采用2号功能调用,分别输出30 31 30 31 30 30 31 31显示:01010011参考程序:CODE SEGMENTASSUME CS: CODESTART:MOV CX ,8 ;显示字符个数为8MOV BL ,53HNEXT:SHL BL ,1 ;将显示位移至CF中JC ONE ;CF=1?MOV DL ,30H ;CF=0,将0的ASCII放在DL中JMP EXITONE:MOV DL ,31H ;CF=1,将1的ASCII放在DL中EXIT:MOV AH ,2INT 21H ;调用DOS功能显示DEC CX ;循环次数减1JNZ NEXT ;判断是否结束MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START上机操作:c:\masm>EDIT ShowBL.asm ;编辑源程序c:\masm>MASM ShowBL ;汇编成ShowBL.objMicrosoft (R) Macro Assembler Version 5.10Copyright (C) Microsoft Corp 1981,1988. All rights reserved.48912 + 447243 Bytes symbol space free0 Warning Errors0 Severe Errorsc:\masm>LINK ShowBL ;连接成ShowBL.exeMicrosoft (R) Overlay Linker Version 3.61Copyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segmentc:\masm>ShowBL ;装载并执行ShowBL.exe 01010011 ;屏幕显示c:\masm>-在DEBUG下查看ShowBL.exe的装入情况:c:\masm>DEBUG ShowBL.exe- R ;查看当前寄存器内容AX=0000 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B51 ES=0B51 SS=0B61 CS=0B61 IP=0000 NV UP EI PL NZ NA PO NC B353 MOV BL,53- U CS:0 ;查看程序0B61:0000 B353 MOV BL,530B61:0002 B90800 MOV CX,00080B61:0005 D0E3 SHL BL,10B61:0007 7205 JB 000E…….0B61:0017 B44C MOV AH,4C0B61:0019 CD21 INT 21…….-G ;执行程序01010011Program terminated normally-例2:将某段中的字符串“Hello!”传送到另一段中。

实验二_汇编语言程序上机过程

实验二_汇编语言程序上机过程

实验二:汇编语言程序上机过程实验目的:1、掌握常用工具EDIT,MASM和LINK的使用。

2、伪指令:SEGMENT, ENDS, ASSUME, END, OFFSET, DUP。

3、掌握汇编源程序的基本架构4、了解.EXE文件及用INT 21H 4C号功能返回系统的方法。

源程序1:;This is an simple example;--------------------------------------------data segment ;define data segmentmsg db 'hello,everybody!',0dh,0ah,'$'data ends;-------------------------------------------code segment ;define code segmentassume ds:data,cs:codestart:mov dx,data ;set ds segmentmov ds,dxlea dx,msg ;display stringmov ah,9int 21hmov ax,4c00h ; returnint 21hcode ends;--------------------------------------------end start源程序2:;program title goes here----ex_movs;*********************************************data segment ;define data segmentsource_buffer db 40 dup('a')data ends;****************************************************** extra segment ;define extra segmentdest_buffer db 40 dup(?)extra ends;****************************************************** code segment ;define code segment;------------------------------------------------------main proc far ;main part of programassume cs:code, ds:data, es:extrastart:;set up stack for returnpush ds ;save old data segmentsub ax, ax ;put zero in AXpush ax ;save it on stack;set DS register to current data segmentmov ax, data ;data segment addrmov ds, ax ;into DS register;set ES register to current extra segmentmov ax, extra ;extra segmentmov es, ax ;into ES register;main part of program goes herelea si, source_buffer ;put offset addr of source buffer in SI lea di,dest_buffer ;put offset addr of dest buffer in DIcld ;set DF flag to forwardmov cx,40 ;put count in CXrep movsb ;mov entire stringret ;return to dosmain endp ;end of main part of program;------------------------------------------------------------code e nds ;end of code segment;************************************************************end start ;end assembly实验步骤:1、用文字编辑工具EDIT将源程序输入,其扩展名为.ASM。

实验二汇编语言上机过程实验(机制本)

实验二汇编语言上机过程实验(机制本)

实验二汇编语言上机过程实验一、实验目的1、了解和掌握由键盘接收数据,并显示其运行结果的方法。

2、掌握INT 21H 的09H和0AH,01H和02H的功能。

3、熟悉在PC机上建立,汇编,链接,调试和运行8086/8088汇编语言程序的过程。

二、实验内容1、汇编语言源程序的上机过程:①将masm5.zip文件下载放在D:\masm文件夹下, 在该文件夹下将压缩文件解压缩。

②利用编辑器建立一个ASM 源文件。

Edit ,记事本等编辑器文件以文件名.asm文件名保存。

最好保存在D:\masm文件夹下。

(即:D:\masm\文件名.asm)文件名自取。

③点击开始菜单,运行↙>cmd↙>d: ↙>cd masm↙>masm 文件名 3下回车>link 文件名 3下回车>debug 文件名.exe>g ↙其中利用MASM.EXE对源程序进行编译。

生成中间代码文件:文件名.obj。

利用link.exe对obj文件进行连接。

生成最终目标代码文件:文件名.exe。

运行可执行文件:文件名.exe,并利用debug调试工具查看结果。

2、编写一个完整程序,在屏幕上显示字符串How are you!data segmentstring db 'how are you!$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset stringmov ah,9int 21hmov ah,4chint 21hcode endsend start三、实验器材IBM PC 微机一台四、实验报告要求1、实验报告应包括实验目的,实验内容,实验步骤,实验思考题2、完成实验思考题,如有编程题,写出调试正确的程序,并给程序加注释,写出实验中所记录下的内存数据存放格式。

五、实验思考题下面的汇编语言源程序有错误的,试给程序加注释。

汇编上机实验报告

汇编上机实验报告

汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。

实验内容:实验一:汇编程序的简单输入输出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,并将每个元素的值打印到屏幕上。

汇编第二次上机实验

汇编第二次上机实验

汇编第二次上机实验班级:姓名:学号:时间:2012年11月2日题目:写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结果放在D_SEG中的SUM中。

其中AUGEND,ADDEND和SUM均为双精度数,AUGEND赋值为99251,ADDEND赋值为-15962。

一、设计思路在数据段中分配两个双字AUGEND和SUM,AUGEND初始化为99251,在附加段中分配一个双字ADDEND并初始化为-15962。

然后利用寄存器AX对低位字相加,DX对高位字相加。

最后将结果放回SUM单元。

二、详细设计过程1.设计源代码新建一个文本文件,并把拓展名改为asm,我命名为“plus.asm”。

根据上述思路,设计出源代码。

写好之后先自行检查一下,更改语法错误并保存。

最终代码见附录。

2.对源程序进行汇编在命令提示符下,转到源文件plus.asm所在目录,输入命令“masm plus”。

若汇编有错误,根据错误提示修改源文件并重新汇编,直到显示“0 Waring Errors和0 Severe Errors”,汇编通过。

结果如图1。

图1 汇编结果3.用LINK程序产生EXE文件上一步产生的OBJ文件虽然是二进制的,但不是可执行的,还必须通过连接程序进行连接,使其转换成EXE可执行文件。

输入命令“link plus”,按ENTER,根据提示进行操作。

由于源程序中没有定义堆栈段,而是使用系统的堆栈段,连接程序给出无堆栈段的警告,但并不影响程序运行,如图2。

到此,已经得到了程序。

图2 连接结果4.执行和调试程序输入命令“plus”,发现并没显示结果如图3。

这是因为程序中没有调用中断把结果输出到屏幕上,其实程序已经瞬间执行完成并返回DOS了。

要看到执行的结果,只能使用命令调试程序了。

调用命令“debug plus.exe”,在调试模式下,输入“t d”执行13条指令,使程序停止在RETF指令处,用“d DS:0,LA”和“d ES:0,LA”显示数据段和附加段的前10个字节,如图4。

汇编语言上机实验二2015李中

汇编语言上机实验二2015李中
实验报告
课程:汇编语言程序设计
专业班级:计算机科学与技术
学号:
姓 名:李中
实验二 汇编命令(伪指令)实验
一、实验目的
1、掌握数据定义伪指令的使用方法;
2、掌握符号定义伪指令的使用方法;
3、掌握段定义伪指令的使用方法;
4、掌握各种数据在内存中的存放形式。
二、实验要求
1、学会使用数据定义伪指令定义字节数据、字数据、双字数据、四字数据及十字数据;
程序段如下:
DSEG SEGMENT
B1 DW 1234H,5678H,8000H,'XY'
B2 DW 256*16,46H,-25
B3 DW ?,OFFSET B1
B4 DW 3 DUP (1234H)
DSEG ENDS
END
步骤:编、链接下列程序段。然后在debug中,用D命令观察DD定义的数据在内存中的存放格式。
程序段如下:
DSEG SEGMENT
C1 DD 12345678H,'MN'
C2 DD 80000000H,-1
C3 DD 36.625,-36.625
C4 DD 3 DUP (1234H)
DSEG ENDS
END
步骤:
编辑:
汇编:
链接:
测试:
四、遇到的问题
1.用edit进行程序编辑时,文件名没有加上后缀.ASM,汇编和链接后,用debug中的D命令查看数据的存储形式时,发现全是乱码现象。
2.用debug进行测试时,修改程序,必须重新汇编、链接,且将原来生成的文件删除。
2、学会使用DEBUG中的D命令观察字节数据、字数据、双字数据等在内训中的格式;
3、学会使用DEBUG中的E命令修改内存中存放的数据;

实验二-汇编语言程序的上机步骤

实验二-汇编语言程序的上机步骤

实验二汇编语言程序的上机步骤一、实验目的熟练掌握汇编语言程序的上机步骤和程序调试方法。

二、实验内容及步骤1.通过CMD命令进入DOS方式。

2.通过CD命令和MD命令建立和进入用户程序目录。

3.将实验一笑脸程序补充为一个完整的汇编语言程序。

4.熟读第五部分内容:环境简介5.通过编辑——汇编——连接步骤生成.EXE形式的笑脸程序Smile.exe。

6.运行Smile.exe程序,观察运行结果。

7.用“DUBUG Smile.exe”命令将Smile.exe程序装入内存,通过R命令读取Smile.exe程序在内存的地址。

8.用反汇编U命令观察笑脸程序。

9.重复实验一“使用DEBUG调试程序”中的步骤(4)和(5),观察程序运行结果。

10.验证题以下程序段用以显示信息“Press any key when you ready.”。

在用户按下任一键后,另起一行显示信息“Input your password:”。

DSEG SEGMENT use16MESS1 DB ‘Press any key when you ready’,0AH,0DH,‘$’MESS2 DB ‘Input your password:’,’$’DSEG ENDSSSEG SEGMENT STACKDB 80H DUP(0)SSEG ENDSCSEG SEGMENTASSUME DS:DSEG,SS:SSEG,CS:CSEGSTART:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21H ;显示“press any key when you ready.”MOV AH,08HINT 21H ;等待用户按任一键MOV DX,OFFSET MESS2MOV AH,09HINT 21H ;显示“Input your password:”MOV AH,4CHINT 21HCSEG ENDSEND START三、实验要求认真完成实验每一步骤,详细记录实验过程、现象和结果,及时整理实验报告。

实验2— 汇编语言上机过程

实验2— 汇编语言上机过程

实验2 汇编语言上机过程一、实验目的掌握汇编语言上机过程,熟练使用EDIT,MASM,LINK,DEBUG命令。

二、实验内容在显示器上显示一段字符串。

三、实验步骤1、进入DOS ,输入D:回车2、输入D:\>CD MASM5输入D:\MASM5>EDIT 123.ASM此时进入EDIT全屏编辑窗口。

输入源程序,并且存盘。

ALT键可以激活菜单,打开FILE下拉菜单中的SA VE或SA VE AS保存编辑好的文件,然后退出。

此时,源程序建立完毕。

3、用MASM产生OBJ文件输入MASM 123.ASM 回车第一个是OBJ文件,回车确定,即建立目标文件。

第二个是LIST列表文件,它同时列出源程序和机器码程序清单,并给出符号表,如需要可输入123.LST,不需要直接回车。

第三个CRF文件用来产生交叉引用表,一般程序不需要建立此文件,直接回车。

注:警告错误和严重错误必须都为0,编译才算通过,如不为0,则记住错误行号,返回EDIT 修改程序,然后再编译。

4、用LINK程序产生EXE文件输入LINK 123.OBJ 回车LINK有两个输入文件OBJ(目标文件)和LIB(库文件),无特殊需要,对LIB直接回车。

LINK的输出文件,一个是EXE文件,另一个是MAP文件,它是连接文件的列表文件,称为连接映象,它给出每个段存储器的分配情况。

如没有严重错误,将产生EXE文件,如有错误重新执行步骤2、3、45、程序执行输入123.EXE 回车查看屏幕显示,是否和预期结果一致。

四、程序清单DA TA SEGMENTBUFF DB 'How are you!','$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV AH,9HMOV DX,OFFSET BUFFINT 21HMOV AX,4C00HINT 21HCODE ENDSEND START。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

昆明理工大学信息工程与自动化学院学生实验报告
(2013 —2014 学年第一学期)
一、实验目的:
1、熟悉并且掌握汇编语言的基本指令;
2、熟练地掌握循环与分支程序的设计过程;
3、掌握带符号数的比较转移指令:JL、JLE、JG、JGE;
4、伪指令EQU 及操作符'$'的使用。

5、熟悉并且掌握BIOS 和DOS中断的调用方法。

二、实验要求:
A、设计要求
1、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z 字符,均显示“c”;若是回车字符,则结束程序,若为其它字符则不显示,继续等待新的字符输入。

2、提示编程:①回车字符的ASCII码为0DH
②显示字符用INT 21H的2号调用
B、设计要求
已知DATA单元开始存放三个带符号数
1、判断三个数是否同号,若同时为正,显示“+”,若同时为负,则显示“—”,否则显不“*”。

2、显示三个数中的最小值。

;A题:
;判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符,则结束程序,若为其它字符则不显示,继续等待新的字符输入。

data segment
DB 0
data ends
code segment
assume cs:code,ds:data
main proc far
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
next:
mov ah,07
int 21h
cmp al,0dh
jE end_d
cmp al,'0'
JGE DY0 ;>=0
JMP NEXT ;<'0'...30H
DY0:
CMP AL,'9'
JLE IS_09
CMP AL, 'A'
JGE DY_A ;DAYU A JMP NEXT ;<'A'...41H
DY_A:
CMP AL,'Z'
JLE IS_AZ
CMP AL,'a'
JGE DY_xA ;DAYU xA
JMP NEXT ;<'a'...61H
DY_xA:
CMP AL,'z'
JLE IS_AZ
JMP NEXT
;......................
IS_AZ:
MOV AH,02
MOV DL,'c'
INT 21H
JMP NEXT
IS_09:
MOV AH,2
MOV DL,AL
INT 21H
JMP NEXT
end_d:
ret
main endp
code ends
end main
;=============================================================
;B题:
data_C segment
DATA DB -1 , 4, 9 ;该处3数值可任意设定
A1 DB 0
A2 DB 0
A3 DB 0
DISP_MESS DB 0DH,0AH,'MIN IS : ' D1 DB 0
D2 DB 0, 'H$'
data_C ends
code segment
assume cs:code,ds:data_C
main proc far
push ds
sub ax,ax
push ax
mov ax,data_C
mov ds,ax
MOV BX, OFFSET DATA
MOV AL,[BX]
INC BX
MOV AH,[BX]
CMP AL,AH
JL ALAL1 ;AL<AH
XCHG AH,AL
ALAL1:
INC BX
MOV DL,[BX]
CMP AL ,DL
JL ALAL
XCHG AL,DL
ALAL:
CMP AH,DL
JL AL_SMALL
XCHG AH,DL
AL_SMALL:
MOV A1,DL
MOV A2,AH
MOV A3, AL
XOR DL,AL ;最大和最小数异或
AND DL,80H
NOT DL
TEST DL,80H ;高位为1 表示一正一负,否则为全负或全正JE YZYF
AND AL,80H
NOT AL
TEST AL,80H ;高位为1 表示全负
JE QF
MOV AH,02
MOV DL,'+'
INT 21H
JMP DISP_SMALL
QF:
MOV AH,02
MOV DL,'-'
INT 21H
JMP DISP_SMALL
YZYF:
MOV AH,02
MOV DL,'*'
INT 21H
DISP_SMALL: ;显示最小值
MOV AL,A3
MOV AH,AL
AND AX,0F00FH
MOV CL,4
SHR AH,CL
CMP AH,0AH
JGE IS_AZ
ADD AH,30H
MOV D1,AH
JMP NN_1
IS_AZ:
ADD AH,40H -0AH+1
MOV D1,AH
NN_1:
CMP AL,0AH
JGE IS_AZ1
ADD AL,30H
MOV D2,AL
JMP NN_2
IS_AZ1:
ADD AL,40H -0AH+1
MOV D2,AL
NN_2:
MOV AH,09
MOV DX,OFFSET DISP_MESS
INT 21H
ret
main endp
code ends
end main
c、设计要求
编写0号中断的处理程序,使得在除法溢出发生时,在屏幕上输出字符串”divide error!”,然后返回DOS。

d、设计要求
编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后存入内存缓冲区BUFFER。

加密表为:
输入数字:0、1、2、3、4、5、6、7、8、9
密码数字:7,5,9,1,3,6,8,0,2,4
提示:加密可通过XLAT指令完成。

要求:键盘输入通过BIOS和DOS中断分别实现。

三、实验环境
汇编程序:MASM 6.15,链接程序:LINK.EXE,调试环境:DEBUG.EXE,对操作系统和计算机五特殊要求,如果是WIN7以上操作系统,需要安装DOSBOX虚拟平台。

四、实验内容(算法及运行结果的截图)
五、实验总结(程序的优缺点,不足和改进的过程)。

相关文档
最新文档