汇编上机(实验二)
汇编语言上机实验内容
实验一上机操作一、实验目的掌握汇编语言程序编辑、汇编、连接、运行以及利用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李中
课程:汇编语言程序设计
专业班级:计算机科学与技术
学号:
姓 名:李中
实验二 汇编命令(伪指令)实验
一、实验目的
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 汇编语言上机过程一、实验目的掌握汇编语言上机过程,熟练使用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。
2010汇编语言上机实验二
;多字节BCD码乘2子程序 MULTI PROC LEA DI,BCDBUF+5 ;从低位开始 MOV CL,5 CLC MUL1: MOV AL,[DI] ;取BCD码 ADC AL,AL ;乘2 AAA ;十进制数运算校正 MOV [DI],AL ;存BCD码 DEC DI DEC CL JNE MUL1 RET MULTI ENDP COSEG ENDS END HEXBCD
汇编语言上机实验(二) 4学时
国家级计算机实验示范中心
实验二 数制、码制和子程序的编程与调试
一.实验目的: 实验目的: 1. 熟练掌握编写汇编语言原程序的基本方法和基本框架。 2. 熟练使用DEBUG调试程序。 3. 掌握十六进制数与ASCII码之间,ASCII码与BCD码之间的转换。 4. 掌握用DOS功能调用,实现字符的输入和显示。 5. 掌握子程序的编程与调试方法。 二.实验内容: 实验内容: 1、从键盘输入两个2位十进制正数转换成二进制数后,对这两个数进行相加相乘 运算,结果以十六进制数形式显示在屏幕上。 2、从键盘输入两个2位十进制正数转换成组合BCD码后,对这两个数进行相加 相乘运算,结果以十进制形式显示在屏幕上。 3、从键盘输入一个4位十进制正数并回显后,将其对应的十六进制数显示在屏幕 上。
实验要求一参考程序:
TITLE CONVERT HEXADECIMAL TO BCD DATA SEGMENT PROMPT DB "INPUT HEXADECIMAL(4DIGITS):$' HEXBUF DB 5,0,5 DUP(0) DISP DB 0AH,0DH BCDBUF DB 6 DUP(0),'$' DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1 HEXBCD: MOV AX,DATA MOV DS,AX
实验2-汇编语言上机环境及基本操作
实验二汇编语言上机环境及基本操作一、实验目的及要求1.掌握汇编语言源程序的书写格式和要求2.掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
3.学会使用记事本、MASM、LINK、DEBUG等软件工具。
4.掌握将数据和代码都放在代码段的程序设计方法。
5.掌握将数据和代码放不同段的程序设计方法。
6.掌握用LOOP指令构建循环程序二、实验内容1.练习:计算机上建立、汇编、连接、调试及运行程序的方法编写程序,计算2^121)在D盘建立一文件夹,命名(例如101),将MASM.EXE和LINK.EXE复制到此文件夹;在此文件夹中新建文本文件,文件名改为汇编源程序名,例如:2e12.asm 用记事本打开2e12.asm,输入源程序并保存。
源程序:assume cs:codecode segmentmov ax,2mov cx,11s: add ax,axloop smov ax,4c00hint 21hcode endsend2)汇编源程序点开始菜单,点运行,输入CMD按回车,进入命令提示符窗口;输入D:并回车,打开D盘,再输入CD 101并回车,进入101文件夹;输入MASM 2e12并回车,一路按回车,进行汇编汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。
其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。
这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。
汇编通过后,会生成目标文件2e12.obj 3)连接目标程序、输入LINK 2e12并回车,一路按回车连接成功后,会生成可执行文件2e12.exe4)跟踪并调试可执行程序输入DEBUG 2e12.exe并按回车,进入DEBUG调试程序单步运行程序,跟踪程序,每执行一条指令,检查相关寄存器或存储器的数据,看看程序是否按我们的意愿运行,若有出入,修改源程序,重新汇编、连接、运行调试,直到成功编写程序计算100×300,用循环结构实现完成否?2.将数据和代码都放在代码段的程序设计方法程序功能:将8个字数据累加求和,存入AX便于大家检查验证,将8个字设为1,2,3,4,5,6,7,8assume cs:codesgcodesg segmentdw 1,2,3,4,5,6,7,8start: mov bx,0mov ax,0mov cx,8s: add ax,cs:[bx]add bx,2loop smov ax,4c00hint 21hcodesg endsend start调试程序,结果是否正确?若将程序中的标号start去掉,结果如何?add ax,cs:[bx]语句中段前缀为什么用CS,能去掉吗?能改为DS吗?3.将数据和代码都放在不同的段,实现题2的功能assume cs:codesg,ds:datasgdatasg segmentarray dw 1,2,3,4,5,6,7,8datasg endscodesg segmentstart:mov ax,datasgmov ds,axmov bx,offset arraymov ax,0mov cx,8s: add ax,ds:[bx]add bx,2loop smov ax,4c00hint 21hcodesg endsend start调试程序,结果如何?比较3和2的源程序,多段程序设计与单一段程序设计4.对题3的程序稍做修改,求出8个数中的最小数和最大数分别存入MIN和MAX 单元(若能力有限,只求其中之一)提示:用比较指令(P62)结合条件转移指令(P89),产生不同的程序分支要求简要描述解题思路,源程序要加上必要的注释。
汇编语言上机实验汇总
汇编语言上机实验汇总汇编语言是计算机的低级语言,主要用于编写底层程序和驱动程序。
在学习汇编语言的过程中,学生通常需要进行一定数量的上机实验。
下面是一个汇编语言上机实验的汇总。
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)绘制简单的图形或运行一个音频文件。
这些上机实验可以帮助学生逐步掌握汇编语言的基本知识和技能,并为以后的高级汇编语言编程打下基础。
实验二 汇编语言程序上机过程
实验二汇编语言程序上机过程实验目的:熟悉8086/88汇编语言编程格式及上机设计调试过程。
如图5-1所示。
实验器材:计算机一台,DOS或WINDOWS环境,、MASM.EXE、LINK.EXE、DEBUG.EXE 等程序文件。
实验内容及步骤:1、编辑录入源程序建议EDIT后的文件名不要省略,源程序扩展名必须为ASM,不能省略。
EDIT界面如图6-1所示,激活菜单用鼠标单击或ALT+菜单名的第一个字母。
最常用的文件下拉中Save(保存)、Exit(退出,若未存盘会提示是否存盘)两个命令,如果未存盘选择Exit则会弹出如图6-2所示的对话框询问是保存退出(Yes)、不保存退出(No)、取消返回继续编辑(Cancel)。
例如:执行如下命令图6-1 EDIT的基本界面图6-2 EDIT的Exit命令对话框2、汇编汇编命令格式如下:建议源程序基本名不要省略。
例如:;扩展名“.ASM”可省略若没有错误显示如下:Microsoft (R) Macro Assembler Version 5.10Copyright (C) Microsoft Corp 1981, 1988. All rights reserved.Object filename [aa.OBJ]: ;目标文件名Source listing [NUL.LST]: ;源程序列表文件,加行号便于查错Cross-reference [NUL.CRF]: ;交叉参考文件,名字信息49576 + 420869 Bytes symbol space free0 Warning Errors ;警告错误0 Severe Errors ;严重错误,若有此类错误,不能生成目标OBJ文件有关错误信息的含义请参看教材附录C。
如果省略源程序名则第一个提示信息为:Source filename [.ASM]: ;源程序文件名3、连接连接命令格式如下:建议目标程序基本名不要省略。
汇编语言上机试验指导
作实验2【1】.有空加作实验【4】(1).实验2算术及位串处理程序【1】.在数据段预先存放16个十六进制数的ASCII码,把BX中的四位十六进制数,从左到右用查表的方法找到对应数位的ASCII码,并取出显示出来。
要求见书:参考程序:data segmentasc db30h,31h,32h,33h,34h,35h,36h,37h,38h,39hdb41h,42h,43h,44h,45h,46hdata endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov cl,4rol bx,clmov si,bxand si,0fhmov dl,[asc+si]mov ah,2int21hrol bx,clmov si,bxand si,0fhmov dl,[asc+si]mov ah,2int21hmov ah,4chint21hcode endsend start【2】用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。
要求:(1)字符串的比较程序中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区。
并指出不相等的位置。
参考书上例3.51,题目改为MESS2定义为从键盘输入缓冲区,键盘输入缓冲区定义:mess2DB9,?,9DUP(?)例3.51在数据段中有一个长度为19的字符串MESS1,在附加段中有一个长度为19的字符串MESS2,比较它们是否相等。
若相等显示‘Y’,否则显示‘N’。
编制程序如下所示。
data segmentmess1db‘computer software$’data endsext segmentmess2db‘comkuter software$’ext endscode segmentassume cs:code,ds:data,es:extstart:mov ax,datamov ds,axmov ax,extmov es,axlea si,mess1lea di,mess2mov cx,19cldrepe cmpsbjz yes;如果zf=1跳转到标号yesmov dl,‘n’jmp disp;跳转到标号dispyes:mov dl,‘y’disp:mov ah,2int21hmov ah,4chint21hcode endsend start实验3分支程序设计实验目的:掌握分支与循环程序等基本编程方法。
汇编实验与上机指导.
-d200 L4
2018年9月20日星期四 3
实验内容(2/2)
3)使用汇编命令a,输入以下指令序列: -a100 ****:0100 mov ax , cs ****:0102 mov ds , ax …… 4)使用反汇编命令u,查看上步输入的汇编语言程序(注意对 应的段地址): -u100 5)使用单步执行命令 t执行该指令序列,查看每一步执行的结 果,并记录。
指令的状态 每条指令所占的字节数
2018年9月20日星期四 5
实验二 操作数寻址方式练习
实验目的和实验内容
实验目的
在Debug状态下,验证各种操作数的寻址方式。
练习在Debug状态下输入和调试简单汇编程序的方法。 实验内容 使用Debug命令做存储单元内容修改; 执行汇编指令使用所修改存储单元内容;
2018年9月20日星期四
2
实验内容(1/2)
1)在debug状态下,使用e命令修改存储地址以150、200 为首的6个单元的内容: -e150
****:0150 **.00 **.01
-e200 ****:0200 **.10 **.20 **.30 **.40 2)使用查看命令 d,查看上步所修改的存储单元的内容 (注意对应的段地址): -d150 L2
2018年9月20日星期四 4
实验报告
每一条指令各个操作数所使用的寻址方式
每条指令的执行结果 验证运行结果是否与预期值相同;
首先,理解指令的功能;
然后,找到指令所要处理的源操作数,预期指令执行的结果; 最后,观察DEBUG环境下的数据
实验二 汇编语言程序上机过程及调试
实验报告二课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名实验日期:2014 年 3 月10 日报告退发(订正、重做)一、实验目的学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和运行,使对汇编语言程序设计有一个初步的认识。
二、实验内容1、学习使用全屏幕文本编辑软件EDIT。
用EDIT输入一段给定的源程序。
2、用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到EDIT进行修改。
3、用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE)4、在DOS提示符下运行该可执行文件。
[汇编语言程序的编写格式]汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。
任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。
段的定义有两种格式,分述如下:1,完整的段定义格式:一个段由段头,段体,段尾组成,形式如下:段名SEGMENT[定位类型][组合类型][‘类别’]……段名ENDS其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。
2,简化的段定义格式(MASM5.0版本提供)每段以.开始后跟固定的段名,一般形式如下:DOSSEG.MODEL 存储类型;“存储类型”可选择为SMALL。
.STACK[大小];堆栈段,“大小”指定堆栈的字节数。
.DATA;数据段。
.CODE[名字];代码段;一般只有一个代码段,名字可缺少……例1:用完整的段定义编写一源程序。
NAME EXAM1;可以省略DATA SEGMENT;定义数据段,以下是数据段的内容STR1 DB “HELLO,WELCOME!”,13,10,‘$’STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’STR3 DB “NICE!”,13,10,‘$’STR4 DB “SORRY!”,13,10,‘$’STR5 DB “UNKNOW,ANSWER AGAIN!(Y/N)”,DB 13,10,‘$’STR6 DB “SEE YOU NEXT TIME!”,13,10,‘$’DA TA ENDS ;数据段结束CODE SEGMENT ;定义代码段ASSUME CS:CODE;DS:DATA;以下是代码段内容START:MOV AX,DA TA;给数据段寄存器赋值MOV DS,AXMOV AH,9;显示一字符串的功能号MOV DX,OFFSET STR1;显示字符串STR1的偏址INT 21H;DOS功能调用ASK :MOV DX,OFFFSET STR2;显示字符串STR2INT 21HMOV AH,1;键盘输入一字符的功能号INT 21H;键入的字符ASCⅡ码在ALNOT AL;求反TEST AL,‘Y’;是否按下‘Y’或‘y’键JE NEXT1TEST AL,‘y’JE NEXT1TEST AL,‘N’;是否按下‘N’键或‘y’键JE NEXT2TEST AL, ‘n’JE NEXT2MOV DX,OFFSET STR5;不是按上述键MOV AH,9INT 21HJMP ASK;再返回ASKNEXT1:MOV DX,OFFSET STR3;是按下‘Y’或‘y’键MOV AH,9INT 21HJMP BYENEXT2:MOV DX,OFFSET STR4;是按下‘N’或‘n’键MOV AH,9INT 21HBYE:MOV DX,OFFSET STR6INT 21HMOV DL,7;喇叭响的ASCⅡ码MOV AH,2INT 21HMOV AH,4CH;退回DOSINT 21HCODE ENDS;代码段结束END START;源程序结束注:源程序中的每一行注释语句前一定要加分号‘;’,下同。
汇编上机(实验二)
昆明理工大学信息工程与自动化学院学生实验报告(201 —201 学年第一学期)一、实验目的: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、显示三个数中的最小值。
c、设计要求编写7c号中断的处理程序,使得在除法溢出发生时,在屏幕上输出字符串”201110405313 Li Longzhi”,然后返回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虚拟平台。
四、实验内容(算法及运行结果的截图)先模拟c盘和设置好默认路径,后面程序则可以在该路径下直接编译、链接和运行。
后面文件分别为a.asm、b.asm 、c.asm和test.asm、d.asm。
汇编语言程序设计上机实验指导
汇编语言程序设计上机实验指导一、实验目的1.掌握汇编语言的基本原理和编程技巧。
2.加深对计算机系统结构的理解。
3.培养实验操作和编程能力。
二、实验环境1.所需软件:MARS仿真器。
2.操作系统:任意支持MARS仿真器的操作系统。
三、实验内容1.实验一:编写一个简单的汇编语言程序,实现加法运算。
(1)要求用户输入两个整数。
(2)将两个数相加。
(3)输出两个数的和。
2.实验二:编写一个汇编语言程序,实现乘法运算。
(1)要求用户输入两个整数。
(2)将两个数相乘。
(3)输出两个数的乘积。
3.实验三:编写一个汇编语言程序,实现判断一些数是否为质数。
(1)要求用户输入一个整数。
(2)判断该整数是否为质数。
(3)输出判断结果。
4.实验四:编写一个汇编语言程序,实现打印从1到N之间的所有质数。
(1)要求用户输入一个整数N。
(2)打印出从1到N之间的所有质数。
四、实验步骤1.打开MARS仿真器,创建一个新的程序。
2.按照实验要求,编写汇编语言程序代码。
3.在MARS仿真器中调试和运行程序。
4.检查程序输出结果是否与预期相符。
5.优化程序代码,提高程序的效率和性能。
五、实验注意事项1.确保编写的代码逻辑正确、语法规范。
2.程序设计要遵循模块化设计原则,尽量将程序划分为多个模块,提高程序代码的可读性和维护性。
3. 实验过程中要注意调试程序,排除可能出现的bug。
4.在程序编写过程中,保持良好的编程习惯,合理命名变量和子程序,提高代码的可读性。
六、实验总结1.实验报告中需包含实验的目的、内容、步骤、注意事项等内容。
2.分析并总结实验中遇到的问题和解决方法。
3.对实验过程、结果的合理性进行分析和讨论。
4.提出对实验中存在问题的改进建议。
以上就是一份汇编语言程序设计上机实验指导的内容。
希望这份指导能够帮助学生们更好地进行汇编语言程序设计的实验,提高他们的实践能力和编程水平。
汇编上机实验报告
汇编上机实验报告实验名称:汇编上机实验报告1. 实验目的通过完成汇编上机实验,掌握汇编语言的基本概念和语法规则,理解计算机底层运行的原理,加深对计算机体系结构的理解。
2. 实验环境硬件环境:个人电脑一台,操作系统为Windows 10软件环境:MASM汇编语言开发工具(Microsoft Macro Assembler)、DOSBox模拟器3. 实验内容及步骤3.1 实验一:汇编程序基本框架搭建步骤:(1) 在MASM环境下创建一个新的汇编源文件,命名为"lab1.asm"。
(2) 在源文件中编写汇编程序的基本框架,包括段定义、数据定义和代码段等。
(3) 使用MASM汇编器将源文件编译为目标文件。
(4) 使用链接器将目标文件连接为可执行程序。
(5) 在DOSBox模拟器中执行可执行程序,观察程序输出结果。
3.2 实验二:实现简单的数值运算步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab2.asm"。
(2) 在源文件中编写汇编程序,实现两个数的相加、相减、相乘和相除等简单的数值运算。
(3) 使用MASM汇编器将源文件编译为目标文件。
(4) 使用链接器将目标文件连接为可执行程序。
(5) 在DOSBox模拟器中执行可执行程序,输入两个数值,观察程序计算结果。
3.3 实验三:字符串处理步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab3.asm"。
(2) 在源文件中编写汇编程序,实现字符串的输入、输出和处理。
(3) 使用MASM汇编器将源文件编译为目标文件。
(4) 使用链接器将目标文件连接为可执行程序。
(5) 在DOSBox模拟器中执行可执行程序,输入一个字符串,观察程序对字符串的处理结果。
4. 实验结果与分析实验一:汇编程序基本框架搭建在DOSBox模拟器中成功执行了汇编程序,没有出现任何错误提示,并得到了预期的输出结果。
上机2
实验2 指令格式与寻址方式实验目的:熟悉汇编语言指令格式,掌握常用数据定义伪指令,理解各种寻址方式的应用。
掌握调试工具Windbg.exe的使用。
实验要求:(1)通过调试程序理解常用数据定义伪指令的作用。
(2)通过调试程序理解各种寻址方式的应用。
(3)熟练掌握调试工具Windbg的使用方法。
实验内容:(1)上机汇编连接例3-4--例3-9,通过列表文件和windbg察看数据在内存中的分配情况。
(2)上机汇编连接例4-1--例4-9,通过windbg察看机器码,并单步执行,观察每一条指令的执行结果。
实验步骤:1、(1)例3-4的列表文件如下所示,其中const1和const2的内存单元已用其他颜色进行标注:Microsoft (R) Macro Assembler Version 6.14.8444 10/18/12 22:06:48lt304.asm Page 1 - 1;lt304.asm,数值型参数示例.386= .model flat, stdcall Mode32 equ .model flat, stdcall= 0000000D cr equ 0dh= 0000000A lf equ 0ah= 00000D0A crlf equ cr shl (8) +lf= 12345678 DA equ 12345678hMode32.stack 409600000000 .data00000000FF FF 80 80 64 const1 byte255,-1,128,-128,100,100d,01100100b,64h, 'd',\64 64 64 64 3031 32 33 34 3536 37 38 39 6162 63 78 79 7A'0123456789', 'abcxyz'00000019 0D 0A 31 31const2 byte cr, lf,'a'-30h,1+30h= 00000040 num=64= 00000064 num=64h.radix 16= 00000064 num= 64= 0000064D num=64d.radix 1000000000 .code00000000 start:00000000 C3 ret00000001 end startMicrosoft (R) Macro Assembler Version 6.14.8444 10/18/12 22:06:48 lt304.asm Symbols 2 – 1(2)、用memory窗口察看const1开始的29个字节空间的内容3、用Windbg调试例4-1,用Disassembly窗口察看机器码。
汇编语言上机实验报告
汇编语言上机实验报告汇编语言上机实验报告引言:汇编语言是一种底层的计算机语言,通过使用汇编语言,我们可以更加深入地了解计算机的运行原理和底层机制。
本次实验旨在通过上机实践,掌握汇编语言的基本语法和编程技巧,同时加深对计算机底层的理解。
实验目的:1. 学习汇编语言的基本语法和指令集;2. 掌握汇编语言的程序设计和调试方法;3. 加深对计算机底层原理的理解。
实验环境:本次实验使用的是Windows操作系统,并安装了MASM汇编语言开发工具。
实验过程:1. 实验一:Hello World程序我们首先编写一个简单的Hello World程序,用于验证汇编语言的环境是否正常。
通过使用MASM工具,我们可以将源代码汇编成可执行文件,并在命令行中运行。
该程序的功能是在屏幕上输出"Hello World"。
```assembly.model small.stack 100h.datamsg db 'Hello World$'.codemain procmov ah, 09hlea dx, msgint 21hmov ah, 4chint 21hmain endpend main```通过编译、链接和运行,我们可以在屏幕上看到"Hello World"的输出。
2. 实验二:计算两个数的和在这个实验中,我们将学习如何编写一个简单的加法程序。
我们定义两个变量a和b,并将其值相加,然后将结果输出到屏幕上。
```assembly.model small.stack 100h.dataa db 10b db 20sum db ?.codemain procmov al, aadd al, bmov sum, almov ah, 09hmov dl, sumadd dl, 30hint 21hmov ah, 4chint 21hmain endpend main```在屏幕上,我们可以看到输出结果为"30",即10加20的和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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虚拟平台。
四、实验内容(算法及运行结果的截图)
五、实验总结(程序的优缺点,不足和改进的过程)。