汇编语言上机实验一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)

追踪命令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汇编语言上机调试及基本操作(验证性)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)

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