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

合集下载

汇编上机实验报告心得体会

汇编上机实验报告心得体会

汇编语言程序设计第一次上机作业1.从键盘上接受一个字符,找出他的前导字符和后继字符,按顺序显示这三个字符。

寄存器分配: AL :存输入值x DL :输出显示 流程图:如右图所示 DA TA SEGMENTA DB 0DA TA ENDSSTACK SEGMENT STACKDB 200 DUP(0) STACK ENDSCODE SEGMENT ASSUME DS:DA TA,SS:STACK,CS:CODE S: MOV AX,DA TAMOV DS,AX MOV AH,1INT 21H INC AL MOV DL,AL MOV AH,2 INT 21HDEC ALMOV DL,AL MOV AH,2 INT 21H DEC AL MOV DL,AL MOV AH,2 INT 21H CODE ENDS END S2.从键盘上输入一个数字字符,如不是,显示‘not odd ’,否则显示‘odd ’。

寄存器分配: AL :存输入值x DL :输出显示流程图:如右图所示 程序代码如下:DA TA SEGMENT A DB 0BUF DB,'NOT ODD$' EA DB,'ODD$' DA TA ENDSSTACK SEGMENT STACK DB 200 DUP(0) STACK ENDSCODE SEGMENTASSUME DS:DA TA,SS:STACK,CS:CODE S: MOV AX,DA TA MOV DS,AX MOV AH,1 INT 21H CMP AL,'0' JNGE B CMP AL,'9' JGE B LEA DX,EA MOV AH,9 INT 21H JMP CB: LEA DX,BUF MOV AH,9 INT 21HC: MOV AH,4CH INT 21H CODE ENDS END S第二次上机作业1.将以H为首地址的字节存储区中的技能被3整除又能被13整除的无符号整数的个数(假定<=9)显示出来;同时对应的显示它们分别对应的地址偏移量。

汇编语言上机实验内容

汇编语言上机实验内容

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

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

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

2、利用DEBUG进行程序调试,把握经常使用命令的利用方式,观看运行结果。

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

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

c:\masm>DEBUG手写源程序图 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 ;编辑源程序c:\masm>MASM ShowBL ;汇编成Microsoft (R) Macro Assembler VersionCopyright (C) Microsoft Corp 1981,1988. All rights reserved.48912 + 447243 Bytes symbol space free0 Warning Errors0 Severe Errorsc:\masm>LINK ShowBL ;连接成Microsoft (R) Overlay Linker VersionCopyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segmentc:\masm>ShowBL ;装载并执行01010011 ;屏幕显示c:\masm>-在DEBUG下查看的装入情形:c:\masm>DEBUG- 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、熟悉80X86寻址⽅式及基本指令的功能,进⼀步理解和巩固课堂学习的内容。

2、掌握汇编语⾔程序设计上机过程和汇编语⾔源程序结构,为后续汇编语⾔程序设计打好基础。

3、熟悉Masm for windows集成实验环境,以及DEBUG、CODEVIEW调试⼯具的使⽤⽅法。

⼆、实验预习要求1、熟悉汇编语⾔程序设计上机步骤,熟悉DEBUG、CODEVIEW调试⼯具的使⽤⽅法。

2、复习80X86操作数寻址⽅式及基本指令。

3、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运⾏环境的问题除外),以便在实验时进⾏验证。

三、实验内容(⼀)、读懂下列源程序,使⽤Masm for windows集成实验环境⽣成名为EX11.ASM的源程序,汇编⽣成EX11.OBJ⽂件和EX11.LST⽂件,连接⽣成EX11.EXE⽂件;⽤EDIT 或记事本打开EX11.LST⽂件,了解.LST⽂件包含的信息;使⽤DEBUG 和CODEVIEW调试⼯具单步执⾏EX11.EXE程序,注意观察IP值的变化,并回答下列问题。

1. 程序装⼊后,代码段寄存器CS的内容为0B68 H,代码段第⼀条可执⾏指令:MOV AX,DATA对应的机器代码为B81A0B H,它是⼀个3 个字节的指令,注意观察执⾏该指令时IP值的变化情况,该指令源操作数DATA的寻址⽅式是直接寻址,其值为0B6A 。

2. 执⾏完MOV DS,DA TA指令后,DS的内容为0B6A H,源程序在数据段中定义的数据82H,68H,88H被装⼊的存储单元的物理地址分别是0B6A0 H,0B6A1H,0B6A2H.3. 程序中第⼀条ADD AL,[BX]指令对应的机器代码为0207 H,它是⼀个2个字节的指令,注意观察执⾏该指令时IP值的变化情况;该指令源操作数的寻址⽅式是直接寻址,该操作数所在存储单元的逻辑地址(DS):(BX)为0B6A:0001 ,其物理地址为0B6A1H;执⾏完该指令后(AL)= EA H,CF= 0 ,OF= 0 ,ZF= 0,SF= 1 ,AF= 0 ,PF= 0 ;若两操作数为⽆符号数,计算结果是否正确?z 若两操作数为带符号数,计算结果是否正确?z若计算结果正确,结果是正数还是负数?f4.执⾏完第⼆条ADD AL,[BX]指令后(AL)= 72 H,CF= 1 ,OF= 1 ,ZF= 0 ,SF= 0,AF= 1 ,PF= 1 ;若两操作数为⽆符号数,计算结果是否正确?B 若两操作数为带符号数,计算结果是否正确?B5.指令MOV SUM,AL中,⽬的操作数的寻址⽅式为直接寻址。

实验一汇编语言程序设计上机实验的基本过程

实验一汇编语言程序设计上机实验的基本过程

实验一汇编语言程序设计上机实验的基本过程〇、实验目的和要求:1.熟悉汇编语言程序设计上机实验的计算机软硬件平台。

2.熟悉汇编语言程序设计上机实验的过程。

3.熟练掌握汇编语言源程序的编辑及对其汇编、连接、运行的过程。

4.熟练掌握使用DEBUG调试和运行程序的方法(“工欲善其事,必先利其器!)。

一、实验提要注:以下内容基于初次使用DOS系统和初次上机进行汇编语言程序设计实验以及基本会使用Windows系统的状态,故可根据自己对相关知识得了解和掌握程度,选择性阅读相关内容。

此标注适用于本实验教程的全部内容。

㈠汇编语言程序设计上机实验所需的软硬件平台汇编语言程序设计上机实验需要的计算机软硬件:●装有DOS或Windows操作系统且能正常使用的通用计算机。

●在某个硬盘分区的根目录下创建一个文件夹(类同于DOS系统的目录)。

例如,在计算机的D盘创建一个名为MASM的文件夹(DOS系统对此的标识为“D:\MASM>”,此即所谓的“DOS系统提示符”的表示形式),且在该目录具有以下两个程序:汇编程序MASM.EXE连接程序LINK.EXE而DOS和Windows操作系统本身都提供有以下两个工具程序:文本编辑程序调试程序和两程序文件正常存放在Windows系统的system32文件中(DOS系统中这两文件就存放在于系统文件所在的目录),且默认可以使用于任何工作路径,故在DOS系统状态下,可直接运行EDIT和DEBUG。

其中:可用来编辑和保存汇编语言源程序。

当然,也可使用任何可以编辑纯文本格式的文字编辑软件,诸如Windows系统中自带的记事本等等。

是汇编语言程序设计的得力利器,可以用其完成汇编语言程序设计的几乎整个过程。

本实验教程将详述DEBUG用来调试程序的方法。

此外,据需可选用的软件还有LIB.EXE、CREF.EXE、EXE2BIN.EXE等。

本课程上机实验所用工作平台的建立,将根据所使用的计算机及其所属网络的情况而定。

西安交通大学-汇编语言-实验报告()汇编

西安交通大学-汇编语言-实验报告()汇编

汇编语言实验报告计算机xx班21x0505xxx xx2015年6月2日第二题第三题第五题第七题:下附各个题目代码;第二题:data segmentm dw -1,0,0,1,-2,-3,-4,4 max dw 0dizhi dw ?data endscode segmentmain proc farassume cs:code,ds:datamov ax,datastart: push dssub ax,axpush axmov ax,datamov ds,axlea bx,mmov cx,8t1: mov ax,[bx]test ax,8000hjz t2neg axt2: cmp ax,maxjb t3mov max,axmov dizhi,bxt3: add bx,2loop t1mov ax,axretmainendpcode endsend start第三题:data segmentcount db 5 dup(0)data endscode segmentmain proc farassume cs:code,ds:datastart: mov ax,datamov ds,axs1: mov cx,10dcall fenleicall dispmov ax,4c00hint 21hretmain endpfenlei proc near input: mov ah,1int 21hcmp al,0dhjz exitsub al,30hcmp al,01hjb inputcmp al,05hja inputmov ah,0cbwmov bx,axdec bxinc count[bx]loop input exit: retfenlei endpdisp proc nearmov si,0mov bx,5s: mov dl,count[si]add dl,30hmov ah,2int 21hinc sidec bxcmp bx,0ja sretdisp endpcode endsend start第四题:data segmentscore dw 76,69,84,90,73,88,99,63,100,80 S6 dw 0S7 dw 0S8 dw 0S9 dw 0S10 dw 0data endscode segmentmain proc farassume cs:code,ds:datastart: push dssub ax,axpush axmov ax,datamov ds,axs1: mov cx,10call fenleimov ax,1retmain endpfenlei proc nearmov si,0s2: mov ax,score[si]mov bx,10div blmov bl,alsub bx,6sal bx,1inc S6[bx];S6为S6,S7,S8,S9,S10的首地址add si,2;根据((socre)/10-6)*2决定该成绩送给哪一个单元loop s2retcode endsend start第五题:data segmentx db '123456'y db 0data endscode segmentmain proc farassume cs:code,ds:data start: push dssub ax,axpush axmov ax,datamov ds,axmov ax,2IF (y-x) gt 5rept 10add ax,axendmendifmov bx,1retmain endpend start第六题:datarea segmentM dw 0datarea ends;------------------------------ program segmentmain proc farassume cs:program,ds:datarea start:push dssub ax,axpush axmov ax,datareamov ds,ax;get interrupt vectormov al,1chmov ah,35hint 21hpush espush bx;set interrupt vectorpush dsmov ax,seg countmov ds,axmov dx,offset count mov al,1chmov ah,25hint 21hpop ds;-------------------------- int 1chint 1chint 1chint 1ch;in al,21h;and al,11111110b;out 21h,al;sti;------------------------ ;mov di,1000;delay:;dec di;jnz delay;reset interrupt vector pop dxpop dsmov al,1chmov ah,25hint 21hretmain endpcount proc nearstiinc Miretcount endpprogram endsend start第七题:data segmentscore db 7,5,9,1,3,6,8,0,2,4buffer db 10 dup(1)data endscode segmentmain proc farassume cs:code,ds:data start: push dssub ax,axpush axmov ax,datamov ds,axmov si,0mov cx,10lea bx,score input: mov ah,1int 21hcmp al,0dhjz exitsub al,30hjb inputcmp al,09hja inputxlat;[(bx)+(al)]->almov buffer[si],alinc siloop inputexit: mov ax,axretmain endpcode endsend start。

汇编语言上机1 (2)

汇编语言上机1 (2)

追踪命令T(Trace),也称为单步命令,每执行一条指令就显
示运行结果,使程序员可以细致地观察程序的执行情况。 有两种格式: 1)逐条指令追踪: -T[=地址] 该命令从指定地址起执行一条指令后停下来,显示寄存器内容 和状态值。 2)多条指令追踪: -T[=地址][值] 该命令从指定地址起执行n条命令后停下来,n由[值]确定。 从指定地址起执行一条或数值参数指定条数的指令后停下来,如 未指定地址则从当前的CS : IP开始执行。 注意:给出的执行地址前有一个等号,否则会被认为是被跟踪指 令的条数(数值)。 T命令逐条指令执行程序,遇到子程序(CALL)或中断调用 (INT n)指令也不例外,也会进入到子程序或中断服务程序当中 执行。
运行Debug程序时,如果不带被调试程序,则所有段 寄存器值相等,都指向当前可用的主存段;除SP之 外的通用寄存器都设置为0,而SP指示当前堆栈顶在 这个段的尾部;IP=0100h;状态标志都是清0状态。 运行Debug程序时,如果带入的被调试程序扩展名不 是.EXE,则BX.CX包含被调试文件大小的字节数 (BX为高16位),其他同不带被调试程序的情况。 运行Debug程序时,如果带入的被调试程序扩展名 是.EXE,则需要重新定位。此时,CS : IP和SS : SP 根据被调试程序确定,分别指向代码段和堆栈段。 DS=ES指向当前可用的主存段,BX.CX包含被调试文 件大小的字节数(BX为高16位),其他通用寄存器 为0,状态标志都是清0状态。
检查和修改寄存器内容的命令R(Register) ,
它有三种方式: 1)显示CPU内部所有寄存器内容和标志位状态 格式为:-R R命令显示中标志位状态的含义如下表所示:
标志名 溢出Overflow(是/否) 方向Direction(减量/增量) 中断Interrupt(允许/屏蔽) 符号Sign(负/正) 零Zero(是/否) 辅助进位Auxiliary Carry(是/否) 奇偶Parity(偶/奇) 进位Carry(是/否) 置位 OV DN EI NG ZR AC PE CY 复位 NV UP DI PL NZ NA PO NC

实验一-8086汇编语言上机调试及基本操作.

实验一-8086汇编语言上机调试及基本操作.

实验一:8086汇编语言上机调试及基本操作(验证性)1、实验目的:(1)掌握常用DEBUG命令: G,D,R,T,U,Q。

(2)掌握工具软件EMU8086。

(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。

(4)掌握简单的数值转换算法2、实验说明:计算机中的数值有各种表达方式,这是计算机的基础。

掌握各种数制之间的转换是一种基本功。

3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数4、参考程序:; 将AX中的三位数拆为三个BCD码, 并存入Result 开始的三个单元DATA SEGMENT; 数据段RESULT_1 DB 1RESULT_2 DB 1RESULT_3 DB 1DATA ENDSSTACK SEGMENT STACK ; 堆栈段STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT; 代码段ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACKSTART:MOV AX, DATAMOV DS, AX ; 设置数据段MOV AX, STACKMOV SS, AX ; 设置堆栈段LEA SP, STACK_TOP ; 设置栈顶指针MOV AX, 2afHMOV CL, 100DIV CLMOV RESULT_1, AL ; 除以100, 得百位数MOV AL, AHMOV AH, 0MOV CL, 10DIV CLMOV RESULT_2, AL ; 余数除以10, 得十位数MOV RESULT_3, AH ; 余数为个位数MOV AX,4C00H ; 返回DOSINT 21H ;CODE ENDSEND START ; 最后一行要按回车键5、实验及报告要求:1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的伪指令和指令;2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。

西安交通大学-汇编语言-实验报告(2015)

西安交通大学-汇编语言-实验报告(2015)

汇编语言实验报告计算机xx班21x0505xxx xx2015年6月2日验结果第二题第三题第四题第五题验结果第七题:建议1.上机实验太少,可以考虑增加上机次数。

2.两次上机时间相隔太久,最好可以将上机时间提前。

3.可以增加一些选作的课程设计,满足不同需求的同学。

下附各个题目代码;第二题:data segmentm dw -1,0,0,1,-2,-3,-4,4max dw 0dizhi dw ?data endscode segmentmain proc farassume cs:code,ds:datamov ax,datastart: push dssub ax,axpush axmov ax,datamov ds,axlea bx,mmov cx,8t1: m ov ax,[bx]test ax,8000hjz t2neg axt2: c mp ax,maxjb t3mov max,axmov dizhi,bxt3: a dd bx,2loop t1mov ax,axretmain endpcode endsend start第三题:data segmentcount db 5 dup(0)data endscode segmentmain proc farassume cs:code,ds:datastart: mov ax,datamov ds,axs1: mov cx,10dcall fenleicall dispmov ax,4c00hint 21hretmain endpfenlei proc near input: mov ah,1int 21hcmp al,0dhjz exitsub al,30hcmp al,01hjb inputcmp al,05hja inputmov ah,0cbwmov bx,axdec bxinc count[bx]loop input exit: retfenlei endpdisp proc nearmov si,0mov bx,5s: mov dl,count[si]add dl,30hmov ah,2int 21hinc sidec bxcmp bx,0ja sretdisp endpcode endsend start第四题:data segmentscore dw 76,69,84,90,73,88,99,63,100,80 S6 dw 0S7 dw 0S8 dw 0S9 dw 0S10 dw 0code segmentmain proc farassume cs:code,ds:datastart: push dssub ax,axpush axmov ax,datamov ds,axs1: mov cx,10call fenleimov ax,1retmain endpfenlei proc nearmov si,0s2: mov ax,score[si]mov bx,10div blmov bl,alsub bx,6sal bx,1inc S6[bx];S6为S6,S7,S8,S9,S10的首地址add si,2;根据((socre)/10-6)*2决定该成绩送给哪一个单元loop s2retcode endsend start第五题:data segmentx db '123456'y db 0data endscode segmentmain proc farassume cs:code,ds:data start: push dssub ax,axpush axmov ax,datamov ds,axmov ax,2IF (y-x) gt 5rept 10add ax,axendmendifmov bx,1retmain endpend start第六题:datarea segmentM dw 0datarea ends;------------------------------program segmentmain proc farassume cs:program,ds:datarea start:push dssub ax,axpush axmov ax,datareamov ds,ax;get interrupt vectormov al,1chmov ah,35hint 21hpush espush bx;set interrupt vectorpush dsmov ax,seg countmov ds,axmov dx,offset count mov al,1chmov ah,25hint 21hpop ds;--------------------------int 1chint 1chint 1chint 1ch;in al,21h;and al,11111110b;out 21h,al;sti;------------------------;mov di,1000;delay:;dec di;jnz delay;reset interrupt vector pop dxpop dsmov al,1chmov ah,25hint 21hretmain endpcount proc nearstiinc Miretcount endpprogram endsend start第七题:data segmentscore db 7,5,9,1,3,6,8,0,2,4 buffer db 10 dup(1)data endscode segmentmain proc farassume cs:code,ds:data start: push dssub ax,axpush axmov ax,datamov ds,axmov si,0mov cx,10lea bx,scoreinput: mov ah,1int 21hcmp al,0dhjz exitsub al,30hjb inputcmp al,09hja inputxlat;[(bx)+(al)]->almov buffer[si],alinc siloop input exit: mov ax,axretmain endpcode endsend start。

汇编语言程序上机实验

汇编语言程序上机实验


常用命令
C: CD
MD
RD DIR
bme bme bme
DEL
CLS EXIT
c.asm
进入C盘 指定当前路径上的bme为当前工作目录 在当前路径新建名为bme的子目录 删除当前路径的bme子目录 显示当前工作目录的文件列表 删除当前工作目录下的c.asm文件 清除屏幕显示内容 退出命令提示符
把MASM.zip 解压到E盘, 把已经编辑 好的 Hello.asm 放入文件夹 内。 打开命令提 示符。


输入“E:” 回车 进入E盘
输入“CD masm” 回车 指定masm 为当前工 作目录

此时可以输 入“DIR” 查看masm目 录下的文件 列表 可以看到, 有我们放进 去的 Hello.asm 文件

输入“link hello.obj” 回车 再三个回车 对 hello.obj 文件进行连 接

提示用户输入要建立的可执行文件 名,若默认括弧内的可执行文件名, 则直接按回车
询问用户是否要建立地址分配文件, 若要,则打入文件名,否则按回车
询问用户是否用到库文件,如果用 户自己建立了库文件,则键入库文 件名,否则按回车
obj文件进行连接提示用户输入要建立的可执行文件名若默认括弧内的可执行文件名若默认括内的则直接按回车执行文件询问用户是否要建立地址分配文件若要则打入文件名否则按回车询问用户是否用到库文件如果用户自己建立了库文件则键入库文件名否则按回车?观察masm文件夹当中是否生成hello
汇编 编辑 连接
调试
? 运行
ቤተ መጻሕፍቲ ባይዱ
代码区
数据区
寄存器区
堆栈区

微机原理汇编实验-汇编语言程序上机操作方法实验

微机原理汇编实验-汇编语言程序上机操作方法实验

学生实验报告实验课程名称:微机原理汇编实验开课实验室:年月日年级、专业、班学号姓名成绩实验项目名称汇编语言程序上机操作方法实验指导教师教师评语一、实验目的学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,为后继课程打下坚实的基础。

二、实验原理使用MASM汇编语言设计工具,设计简单的汇编语言程序并进行运行调试,以便掌握汇编语言设计、编写、调试和运行程序的方法。

三、实验仪器、材料1.软件MASM5.02.PC微机一台四、实验步骤1.建立asm文件在windows系统环境下,应用写字板或其它文字编辑软件编写汇编语言源文件。

注意保存的源文件以asm为后缀。

2.用汇编程序MASM对源文件汇编产生目标程序.OBJ。

3.用连接程序LINK产生可执行文件.EXE。

4.执行程序。

5.程序调试五、实验源代码;------------------------------------------------- ;程序名:Lab101;功能:把NUM数组中的最大值取出并显示输出;-------------------------------------------------DATA SEGMENTNUM DB 12,52,36,14,25,32,14,126 COUNT EQU ($-NUM)DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,COUNT ;初始化循环次数MOV SI,OFFSET NUMMOV AL,[SI]MOV DL,ALINC SIAGAIN:MOV AL,[SI]INC SICMP DL,ALJL SWAPLOOP AGAINJMP FINISHSWAP:MOV DL,ALLOOP AGAINJMP FINISH;--------------------------------;子程序名:TRANNUM;功能:将数字转换为字符串;入口参数:AL;出口参数:无;--------------------------------TRANNUM PROC NEARMOV AL,DLXOR AH,AHMOV CX,3MOV DL,10TRAN1:DIV DLXCHG AH,ALADD AL,'0'PUSH AXXCHG AH,ALMOV AH,0LOOP TRAN1MOV CX,3TRAN2:POP DXCALL DISPLAYLOOP TRAN2RETTRANNUM ENDP;--------------------------------;子程序名:DISPLAY;功能:将单个字符显示输出;入口参数:DL;出口参数:无;--------------------------------DISPLAY PROC NEARMOV AH,02HINT 21HRETDISPLAY ENDPFINISH:CALL TRANNUMMOV AH,4CH ;程序结束返回DOSINT 21HMAIN ENDPCODE ENDSEND START六、实验过程原始记录(数据图表、计算等)1、打开命令提示符:输入cmd2、输入:cd G:/asm/tos3、输入:G:4、输入:masm lab1015、输入:link lab1016、输入:lab101七、实验结果分析从程序代码分析,所给数值中最大值为126,运行程序后输出结果为126,说明程序能够实现其功能。

实验五汇编语言程序设计实验(一)

实验五汇编语言程序设计实验(一)

实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。

2、掌握循环程序的设计。

3、掌握汇编语言主程序与子程序的调用和参数传递。

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

二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。

要求统计字符串用子程序完成。

data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。

2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。

写出操作步骤,程序清单,程序注释,实验现象。

微机原理汇编语言的上机过程 实验报告

微机原理汇编语言的上机过程 实验报告

微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。

实验原理及操作步骤一、上机环境要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。

▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。

▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。

▪调试程序:DEBUG.EXE,用于调试可执行程序。

二、上机过程汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。

1.编辑源程序用文本编辑软件创建、编辑汇编源程序。

常用编辑工具有:、记事本、Word等。

无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。

2.汇编用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。

汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。

汇编过程如下:在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。

此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。

Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。

如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。

此时,需要进行修改,然后再进行汇编。

如此进行,直至汇编无错误,得到目标文件为止。

3.连接汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。

汇编语言上机实验

汇编语言上机实验

汇编语言上机实验主讲:左琼一、汇编程序的功能1.MASM的功能.检查语法错误,提示错误信息.产生可重定位的目标文件(.OBJ).处理各种伪指令.处理宏库,对于宏指令进行宏扩展.提供包括源程序、目标程序以及符号表在内的汇编列表文件(.LST) .提供一个夹有特定控制字符的符号交叉参考文件(.CRF)。

MASM是一个两次扫描(即从头到尾逐行阅读处理汇编源程序,直到END伪指令)的汇编程序,第一次扫描确定用户自定义符号的值,第二次扫描产生目标代码。

即两次扫描后MASM就能将源程序翻译成目标程序(.OBJ)。

DATA1 SEGMENT USE16A DD A1 ;第二遍扫描处理DATA1 ENDSDATA2 SEGMENT USE16A1 DW 125 ;第一遍扫描处理DATA2 ENDS2.其它汇编程序TASMNASM二、连接程序的功能1.连接程序LINK的功能.将指定的若干个目标模块(OBJ)和子程序库(LIB)中的子程序模块连接在一起,生成一个能够执行的文件(EXE/COM).生成一个地址分配文件(MAP),描述各段的起始地址、结束地址、大小等信息。

三、在PC机上建立、调试、运行汇编源程序的方法1.上机步骤(1)建立与修改汇编源程序文件,扩展名为.asm在WINDOWS98或WIN2000下可用记事本输入汇编源程序,然后以.asm为扩展名存盘。

(2)在DOS窗口下,汇编源文件以产生相应的目标文件(扩展名为.obj):执行命令:MASM DEMO.ASM;(简单方式)或者:MASM DEMO.ASM (交互方式)(3)在DOS窗口下,连接目标文件以建立可执行文件(扩展名为.exe)LINK DEMO; (简单方式)LINK (交互方式)LINK命令还可以连接多个目标文件:LINK DEMO1(主模块名)+DEMO2+DEMO3产生可执行文件DEMO1.EXE2.程序调试(1) 调试工具TD.EXE源代码级调试器,可以调试ASM/C等多种语言程序。

08计算机汇编语言上机实习一

08计算机汇编语言上机实习一
的实验报告目录中。 文件名:学号_姓名_汇编语言实验一.word
INT 21H ; 9号调用输出How do you do?
MOV AH,4CH ;设置4CH号调用 INT 21H ;结束程序运行,返回DOS CODE ENDS END START
注意:请在西文状态下输入程序和, ;等符号,否则汇编会 出错 (out of memory)。
思考题:修改程序,使用2号单字符输出DOS功能调用显示
二、实验环境建立
1、汇编语言源程序的上机环境 (1)硬件系统(省略) (2)软件系统
1)DOS操作系统:汇编语言程序的建立和 运行都是在DOS操作系统下进行的。 注意在WIN XP/WIN 2K/WIN SERVS的开始 程序 附件 C:\命令 提示
• DOS 命令简单介绍 改变盘符: C:\>D: (变成D:\>)
How do you do?(参照老师提供的程序实例AAA.ASM)
实验(二)汇编语言调试过程部分实验 报告内容
1、写出汇编语言源程序结构 2、汇编语言调试过程 3、汇编调试中的问题和解决方法
四、要求
1、必须完成课件规定的两个实验内容。 2、将连接后的执行文件保留,老师抽查,完
成后签到。 3、提交电子档实验报告至网络教学平台指定
DATA SEGMENT STR DB “How do you do?$” DATA ENDS STACK SEGMENT STACK DB 200 DUP(?) STACK ENDS
CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE
START: MOV AX,DATA ; 给DS赋初值 MOV DS,AX LEA DX,STR ;显示缓冲区首址赋DX MOV AH,9 ; 设置9号调用

机械_微机原理_学生实验报告

机械_微机原理_学生实验报告

实验一汇编语言上机认识实验一、实验主要内容1、汇编语言源程序文件的建立;2、汇编程序的编辑、汇编、连接、运行。

二、实验目的熟悉汇编语言的上机环境,掌握汇编程序的编辑、汇编、连接、运行等步骤。

三、实验具体操作过程汇编语言的上机的一般步骤为:编辑(用编辑程序形成汇编语言源程序)、汇编(用汇编程序将源文件汇编成目标文件)、连接(用连接程序将目标程序转换为可执行文件)、调试运行(执行可执行性文件,若有错误,利用DEBUG调试程序进行调试,直到没有错误为止)。

1、进入DOS系统单击windows的“开始”按钮,再单击“运行”命令,输入“cmd”命令,进入DOS模式。

再利用相应的DOS命令,切换到masm目录下。

2、编辑.asm源程序在DOS提示符下输入“edit 001.asm”,建立一个汇编源程序文件,本次实验的程序是在屏幕上输出一个字符串“This is a sample program!”,具体程序如下:DA TA SEGMENTBUF DB 'THIS IS A SAMPLE PROGRAM!'DB 0DH,0AH,'$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV AH,9LEA DX,BUFINT 21HMOV AH,4CHINT 21HCODE ENDSEND START3、汇编在dos提示符下输入命令“masm 001.asm”,若发现有语法错误,请回到源程序进行修改;若无错误,进行下一步。

4、连接在dos提示符下输入命令“link 001.obj”。

5、运行在dos提示符下输入命令“001”,发现屏幕上输出“This is a sample program!”,实验完成。

实验二 DEBUG的应用一、实验主要内容1、进入和退出DEBUG程序2、使用DEBUG中的常用命令二、实验目的1、熟悉DEBUG有关命令的使用方法2、学会利用DEBUG掌握有关指令的功能3、学会利用DEBUG运行简单的程序段三、实验具体操作过程1、debug的启动与退出在dos提示符下输入“debug”,并回车,可进入debug状态;在debug提示符下输入“q”,可返回dos提示符。

汇编语言上机步骤

汇编语言上机步骤

实验一汇编语言上机基本步骤一、实验目的:熟悉汇编语言的上机过程,掌握各项工具软件的使用方法二、实验环境:1.硬件:PC微机2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE三、实验内容:1.前期准备:在开始进行汇编语言上机练习之前,建立并进入自己的工作子目录,准备好相关工具软件如MASM.EXE、LINK.EXE等,其后所有工作均在自己的子目录中进行,以避免因路径概念不清而导致的文件存取错误,以及对系统其它部分造成影响。

1)建立自己的工作子目录(例如MYTEST):C:\>MD MYTEST2)进入自己的工作子目录:C:\>CD MYTEST3)将所需工具软件从其它地方(如C:\MASM)拷贝进自己的工作子目录:C:\MYTEST>COPY C:\MASM\MASM.EXEC:\MYTEST>COPY C:\MASM\LINK.EXE2.编写源程序:原则上可以用任何文字处理软件(如EDIT、写字板、甚至WORD)编写源程序,但必须注意,源程序应为ASCII码文件(或称纯文本文件),扩展名一般为.ASM。

因此,建议使用DOS环境下的EDIT软件。

1)在DOS系统操作提示符下键入EDIT并回车,即可进入EDIT文本编辑环境。

如果没有进入,检查当前路径下是否存在EDIT.EXE文件,以及文件是否完整等。

2)从键盘输入下列程序(不必输入注释部分):CODE SEGMENT;定义一个CODE段ASSUME CS:CODE;定义CODE段为代码段START:;可执行语句起始处MOV AH,02H ;以下三条语句将显示字母aMOV DL,’a’INT 21HMOV AH,4CH ;以下二条语句将返回DOSINT 21HCODE ENDS;CODE段结束END START;整个程序结束该程序的功能是仅在CRT屏上显示一个字母a,完成功能的只有其中的三条语句,但其它部分则是一个完整的汇编语言源程序必不可少的部分。

汇编语言上机实验

汇编语言上机实验

实验一 DOS常用命令及8088指令使用 二、实验内容
DEBUG 命令使用 :
1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存 单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH 7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。在操作时要注意提示信息,并按提示操
实验二 内存操作数及寻址方法
二、实验内容和步骤
求累加和程序: 程序: MOV BX,1000 MOV CX,10 SUB AX,AX LOP: ADD AL,[BX] AD CAH,0 INC BX J: LOOP LOP INT 3 步骤: 1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址 值代替。 2)用命令N AA将此程序命名为文件AA(文件名可任取)。 3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开 始地址) 4)用命令W 100将此程序存到AA命名的磁盘文件中。 5)用命令Q退出DEBUG。 6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。 若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。 7)用E命令在内存地址1000H处键入16个数字 8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查 AX,BX的值是否符合你的预计值。 9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样, 若不一样,检查程序是否有错。 10)重复G J与T,再检查AX是否正确。 11)用G命令使程序运行到结束,检查AX值是否正确。

汇编语言上机指导2015

汇编语言上机指导2015

段和段寄存器 的关联
assume cs:code_seg, ds:data_seg1,es:data_seg2
Start:
mov ax,data_seg1 mov ds,ax mov ax,data_seg2
段地址装入 段寄存器
mov es,ax
… mov ax,4C00h
int 21h code_seg ENDS
int main(){
// ;代码段定义开始
int BX;
char *DX,AL,DL;
DX=&msg[0];
cout<<DX<<endl;
cin>>AL;
//从键盘取一个字符
DL=AL;
// AL中字符 传DL
cout<<DL<<endl; //DL中字符在屏幕上显示
return 0; //退出
}
• (DS,DX)确定str 存储区位置
• 输入字符串放str
数据定义
DB, DW, DD, DQ, DT,DF
分别以字节、字、双字、8个字节、10个 字节、6字节为单位定义数据
例1 操作数可以是常数,或是表达式:
DATA_BYTE
DB l0,4,1OH
DATA_WORD
DW lO0,1OOH,-5
MOV AX,Z SUB AX, X MOV CX,W ADD CX, AX MOV Z,CX
MOV AX,4C00h int 21h
code ENDS END start
汇编语言程序与过程的返回
程序的返回(到DOS)
Mov ax,4C00H Int 21h
过程的返回
RET
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NEXT1: MOV DL,AL
MOV AH,02H
INT 21H
MOV AX,SUM
AND AL,0FH
ADD AL,30H
CMP AL,39H
JBE NEXT2
ADD AL,07H
NEXT2: MOV DL,AL
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
实验报告
课程:汇编语言程序设计
专业班级:计算机科学与技术
学号:
姓名:李中
实验一、熟悉汇编语言上机环境
一、实验目的
熟悉在微机上建立、汇编、链接、调试和运行汇编语言程序的全过程
二、实验要求
1、学会使用EDIT建立汇编语言源程序文件
2、学会使用MASM将汇编语言源程序编译为目标程序的方法
3、学会使用LINK将目标程序链接为可执行程序的方法;
ASSUME CS:CSEG,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA DX,DATA
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
编辑:
汇编:
链接:
测试:
2、编辑、汇编、链接、执行下列程序。观察程序的执行结果。该程序的功能是:计算放在DATA1和DATA2单元中的两个数据之和,结果在屏幕上显示出来。
END START
编辑:
汇编:
链接:
执行:
四、遇到的问题与体会
用EDIT进行程序编辑时,要先保存。否则断电后代码消失,还得重新编写。
ASSUME CS:CSEG,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV CL,NUM
MOV AL,1
MONC BL
LOOP DATA
MOV CL,4
SHR AL,CL
ADD AL,30H
CMP AL,39H
JBE NEXT1
ADD AL,07H
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
编辑:
汇编:
链接:
测试:
3、编辑、汇编、链接、执行下列程序。观察程序的执行结果。
该程序的功能是:计算5!,结果显示在屏幕上
参考程序如下:
DSEG SEGMENT
NUM DB 5
SUM DW ?
DSEG ENDS
CSEG SEGMENT
参考程序如下:
DSEG SEGMENT
DATA1 DB 35H
DATA2 DB 29H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AL,DATA1
MOV AL,DATA2
PUSH AX
MOV CL,4
SHR AL,CL
ADD AL,30H
CMP AL,39H
JBE OK1
ADD AL,07H
OK1: MOV DL,AL
MOV AH,02H
INT 21H
POP AX
AND AL,0FH
ADD AL,30H
CMP AL,39H
JBE OK2
ADD AL,07H
OK2: MOV DL,AL
MOV AH,02H
4、学会在DOS环境下和在DEBUG中运行程序
三、实验内容
1、编辑、汇编、链接执行下列程序。观察程序的执行结果。该程序的功能是将字符串“HELLO WORLD”在屏幕上显示出来、
参考程序如下:
DSEG SEGMENT
DATA DB "HELLO WORLD!$"
DSEG ENDS
CSEG SEGMENT
相关文档
最新文档