新编汇编语言程序设计实验指导2代码
汇编语言-实验二 循环与子程序程序设计
汇编语言-实验二循环与子程序程序设计
实验目的
本实验旨在通过学习循环和子程序的概念和使用方法,掌握汇
编语言中循环和子程序的程序设计技巧,培养学生的程序设计能力。
实验内容
1. 循环程序设计:编写一个循环程序,实现指定次数的循环操作。
2. 子程序程序设计:编写一个子程序,实现指定功能的模块化
程序设计。
实验步骤
循环程序设计
1. 根据实验要求确定需要循环的次数。
2. 初始化循环计数器,将循环计数器置为0。
3. 判断循环计数器是否达到循环次数的要求,如果达到则跳出
循环,否则继续执行循环体。
4. 执行循环体的操作。
5. 循环计数器自增1。
6. 返回到第3步继续判断循环条件。
子程序程序设计
1. 根据实验要求确定需要实现的功能。
2. 将要实现的功能封装在一个子程序中,确定输入参数和输出结果。
3. 在主程序中调用子程序完成指定的功能。
4. 如果需要,可以在子程序中调用其他子程序实现更复杂的功能。
实验
本次实验通过编写循环和子程序的程序设计,加深了对汇编语言中循环和子程序的理解。
循环程序设计能够实现重复执行指定次数的操作,提高了程序的效率;子程序程序设计能够实现模块化和可重用性,提高了程序的可读性和可维护性。
通过实践,进一步掌握了汇编语言的程序设计技巧,加深了对汇编语言的理解和应用能力。
参考资料
汇编语言程序设计教程
汇编语言程序设计实验指导书。
汇编实验2-循环程序设计-实验报告
汇编实验2-循环程序设计-实验报告一、实验目的1、了解循环程序设计的方法2、理解汇编语言中循环指令的使用3、掌握汇编语言中常用的循环结构二、实验原理1、循环指令循环指令是计算机中常用的一种控制结构,其作用是重复执行一定的操作。
在汇编语言中,常用的循环指令有LOOP、LOOPE、LOOPNE等,具体功能如下:(1)LOOP:重复执行指定次数的操作;(2)LOOPE:执行操作直到CX寄存器为0或ZF寄存器为1;(3)LOOPNE:执行操作直到CX寄存器为0或ZF寄存器为0。
LOOP指令的语法格式如下:LOOP label其中,label表示循环的目标地址。
2、循环结构循环结构是计算机程序设计中常用的一种结构,其基本形式包括:while、do...while、for等。
在汇编语言中,常用的循环结构有以下两种:(1)无限循环结构:该结构适用于需要不停顿地进行某项操作的情况,底层逻辑基于测试指令;(2)计数器循环结构:该结构适用于需要循环指定次数的情况,底层逻辑基于循环指令。
三、实验内容1、使用循环指令实现计算1~10的和;2、使用循环结构实现计算1~10的和。
四、实验步骤1、使用循环指令实现计算1~10的和。
(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。
2、使用循环结构实现计算1~10的和。
(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。
五、实验结果(1)使用循环指令实现计算1~10的和MOV CX,10MOV AX,0LOOP label1ADD AX,CXDEC CXJNZ label1label1:MOV sum,AX(2)使用循环结构实现计算1~10的和MOV CX,10MOV AX,0label2:ADD AX,CXDEC CXJNZ label2MOV sum,AX六、实验总结本次实验实现了两种不同的循环方式,分别使用了循环指令和循环结构。
《汇编_语言》实验__指导书
BUF DB “hello,world!$”
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
6、汇编命令A:
A命令的格式为:
-A [address]
该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。
7、反汇编命令U :
U命令有两种格式:
1)从指定地址开始,反汇编32个字节,其格式为:
-U[address]
例如:
067C:0110 03 41 42 43 44 45 46 47 - 48 49 4A 4B 4C 4D 4E 4F .ABCDEFGHIJKLMNO
067C:0120 41 A
说明:
左边是用十六进制表示的存储单元地址,0100至0120是DEBUG要显示的存储单元段内偏移地址,而067C是当前数据段的段首址。中间是每个字节存储单元的内容。右边表示每个字节可以显示的字符,“.”表示是不可显示的字符。D命令一行显示16个字节单元的内容,前8个字节与后8个字节之间用-连接。
一般情况下,MASM汇编程序的主要功能有以下3点:
(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在DOS状态下,可以采用宏汇编程序MASM对源程序文件进行汇编,方法是在DOS提示符下键入以下命令:
2.修改存储单元内容的命令E:
E命令有两种格式如下:
第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:
汇编实验2 顺序程序设计
汇编实验二顺序结构程序设计实验目的:(1)掌握汇编语言程序上机过程。
(2)掌握顺序结构程序调试的方法。
实验内容:调试查表程序内存中自TABLE开始的七个单元中连续存放着自然数0~6的立方值(立方值表),任一个数X(0≤X≤6)在FIRST单元中,要求查表找出X的立方值,存SECOND单元。
准备工作:1.进入D:2.建立一个文件夹hb, 即d:\hb3.将MASM和LINK复制到该文件夹中4.单击“开始”-“程序”-“附件”-“命令提示符”5.输入“d:\”6.输入“cd hb”操作步骤:1.输入源程序: EDIT d:\hb\cb.asm在EDIT编辑环境File菜单下选择Save存盘,选择Exit退出编辑环境2.汇编源程序A>MASM CB↙Microsoft (R) Macro Assembler Version 5.10Copyright (C) Microsoft Copr 1981,1988 All rights reserved.Object filename [CB.OBJ]:_↙Source listing [NUL.LST]:↙Cross-reference [NUL.CRF]:↙51394+389950 Bytes symbol space free0 Warning Errors0 Severe ErrorsA>3.连接目标程序A>LINKMicrosoft (R) Overlay Linker Version 3.64Copyright (C) Microsoft Corp 1983-1988. All rights reserved.Object Modules [.OBJ]:CB↙Run File [NUL.MAP]:↙Libraries [.LIB]: ↙显示0个错误才能进行下一步LINK操作4.执行程序A>B没有任何结果输出,原因是程序中没有安排显示输出,结果保存在内存单元中。
汇编语言程序设计实验指导书
重庆师范大学涉外商贸学院计算机各专业实验用书汇编语言程序设计实验指导书(第一版)张开成编前言为适应教学内容由简到繁、由易到难、由浅入深的教学特点,我们编写了这本简易实验指导书,用以指导实验教学。
该指导书分两部分,第一部分指出实验的实验目的、实验内容、实验准备、实验要求、共提出十五个实验,需三十个学时完成。
第二部分为十五个实验的全部程序,仅供学生参考。
该实验指导书由数计学院计算机教研室张开成同志编写。
2010年2月第一部分提出各实验的实验内容、实验目的、实验要求和学时分配实验一:汇编语言基本操作实验(2学时)一、实验目的:明确QE、MASM、LINK三个系统软件的作用。
掌握汇编语言程序的编辑、汇编、连接过程。
二、实验内容:1、编写一个程序:用十进制输出一个按键的AS CⅡ值。
2、从键盘上读入两个一位数(必须保证按下数字键),输出它们的积。
三、实验准备:1、预习QE、MASM、LINK 三个软件的使用方法。
2、按实验要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成扩展名为.EXE的可执行文件。
3、运行程序。
五、实验报告要求:1、总结用QE编辑源程序的方法。
2、说明源程序的连接、汇编过程。
3、分析运行结果。
4、按要求写出完整的实验报告(必须列出程序清单)。
实验二:分支程序设计实验(2学时)一、实验目的:1、学会简单分支和多分支程序的设计方法。
2、掌握程序的调试方法。
二、实验内容:1、从键盘读入两个一位数,输出它们的积。
若为非数字键,则显示字符“E”,退出程序。
2、从键盘接收一个按键,如为小写字母,则显示“L”,是大写字母,则显示“U”,如是数字,则显示“N”,都不是则显示“*”。
三、实验准备:1、预习分支程序设计方法。
2、按实验内容要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成可执行文件.EXE。
3、运行程序。
《汇编语言程序设计》实验指导书
实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。
2.熟悉DEBUG软件的使用。
3.掌握简单程序的编程方法。
二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。
各种I/O设备所提供和接收的数据编码不尽相同。
为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。
例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。
一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。
该方法经济但速度慢。
2.硬件法利用专用代码转换集成电路进行转换。
如74LS74可把BCD码转换为七段代码。
这种方法需要硬件费用,但速度快。
本实验要求掌握软件编码转换技术。
计算机常用的代码有二进制、八进制、十六进制、BCD码、ASCⅡ码、七段码等,它们之间的相互关系如下表所示。
本次试验的内容是ASCⅡ码转换为未组合BCD码设从键盘输入十进制数的ASCⅡ码已存放在起始地址CS :150H的单元中,把它转换成未组合BCD码后,再分别存入起始地址为CS:15AH的单元中。
若输入的不是十进制数的ASCⅡ码,则相应存放结果单元的内容为“FF”。
提示:1.组合BCD码是一位十进制数字占一个字节,高半字节为0,低半字节为该十进制数字的BCD码。
ASCⅡ码转换为未组合BCD码只需减30H。
2.程序框图如下图所示。
3.程序执行前,需要在CS:150H内存缓冲区写入待转换的ASCⅡ码。
方法如下:方法一:用A命令-ACS:150 DB 35,39,30,41,32CS:155 ∧C方法二:用E 命令-ECS:150,35,39,30,41,32方法三:用F命令-FCS:150 L5 35,39,30,41,321.执行程序后检查执行结果可用D命令:-DCS:15ACS:15A 05,09,00,FF,02ASCⅡ码转换为未组合BCD码的程序流程图参考程序如下:ORG 100HMOV CX,0005HMOV DI,150HBB:MOV BL,0FFHMOV A,[DI]CMP AL,3AHJNB DONESUB AL,30HJB DONEMOV BL,ALDONE:MOV AL,BLMOV [DI+0AH],ALINC DILOOP BBINT 20HORG 150HDB 35H,39H,30H,41H,32H实验二顺序结构的程序设计一.实验目的1.掌握计算机常用代码的软件转换技术。
汇编语言程序设计实验指导书
汇编语⾔程序设计实验指导书汇编语⾔程序设计实验指导书信息学院⼆OO七年九⽉汇编语⾔程序设计实验指导讲义⽬录序⾔ IBM PC汇编语⾔实践操作 (1)实验⼀ DOS常⽤命令及8088指令使⽤ (8)实验⼆内存操作数及寻址⽅法 (11)实验三数据串传送和查表程序 (13)实验四屏幕字符显⽰程序 (15)实验五条件转移指令 (17)实验六汇编语⾔程序上机过程 (20)实验七分⽀程序 (22)实验⼋多重循环程序 (24)实验九⼦程序 (25)实验⼗⾳乐程序 (28)实验⼗⼀数码转换程序 (30)实验⼗⼆键盘和窗⼝程序 (33)实验⼗三活动图形显⽰程序 (35)实验⼗四磁盘⽂件操作程序 (38)实验⼗五绝对磁盘读写程序 (44)IBM PC汇编语⾔实践操作本章主要介绍了汇编语⾔源程序的编辑、汇编、连接的⽅法,DEBUG调试命令及其使⽤⽅法⼀、编辑源程序汇编语⾔源程序:⽤汇编语句编写的解决应⽤问题的程序。
汇编程序:将汇编语⾔源程序翻译成机器语⾔程序的系统。
汇编:将汇编语⾔程序翻译成机器语⾔程序的过程。
在编辑汇编语⾔源程序时,对计算机硬件⼯作环境⽆特殊要求,对软件⼯作环境要求也很简单,只需⽤建⽴ASCII码⽂本⽂件的软件即可。
(1)编辑软件⾏编辑软件:/doc/9a62dcfd770bf78a65295449.html全屏编辑软件:WPS、/doc/9a62dcfd770bf78a65295449.html 、/doc/9a62dcfd770bf78a65295449.html 、WORD、PE等。
当输⼊、建⽴和修改源程序时,可任选⼀种编辑软件,不要⽤格式控制符,要求编辑完成的⽂件扩展名⼀定是.ASM。
(2)汇编程序有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,⼀般使⽤宏汇编MASM.EXE,因它⽐ASM.EXE功能强。
TASM适⽤于8086/8088~Pentium系列指令系统所编写的汇编语⾔程序,是⽐较先进的汇编⼯具。
汇编语言程序设计实验指导书
实验一宏汇编MASM5.0运行环境一、实验目的1、熟悉的MASM5.0宏汇编程序运行环境2、掌握用MASM5.0运行汇编语言程序的步骤3、学习及掌握的debug程序的各种命令并调试汇编语言程序。
二、实验仪器计算机、masm汇编运行环境三、实验原理1、建立汇编语言的工作环境(1)编辑程序:EDIT .COM(2)汇编程序:MASM .EXE(3)连接过程:LINK.EXE(4)调试程序:DEBUG .EXE2、运行汇编语言程序的步骤(汇编语言程序的上机过程)在汇编实验步骤的word文档中(请下载参考)。
(1)用汇编程序建立源文件(*.asm)汇编程序:记事本,写字板或EDIT.EXE 。
(文本文件编辑器)扩展名为:.asm(2)用汇编程序(MASM、EXE)产生OBJ文件。
(3)用连接程序(LINK 、EXE)生成EXE文件。
(4)程序的执行直接输入文件名LINKEDIT记事本写字板MASM3、用DEBUG 运行、调试汇编语言程序(1)进入DEBUGC:\ DEBUG (前提DEBUG .COM 程序在C 盘)屏幕显示:- “-”这个符号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG 命令,现在用A命令送程序。
(2)送程序并汇编-A 100169C:0100 MOV DL ,33169C:0102 MOV AH ,2169C:0104 MOV INT 21169C:0106 MOV INT 20169C:0101此程序已送完,并汇编成机器指令(3)现在用G命令一运送程序-G3看一下机器指令是什么样的用反汇编命令U(4)反汇编-U 100 :108段地址偏移地址指令169C :0100 B233 MOV DL ,33169C :0102 B402 MOV AH ,02169C :0104 CD21 INT 21169C :0106 CD20 INT 20169C :D108(5)用Q命令退出DEBUG 返回DOS-QC:\4、DEBUG 命令(1)汇编命令A格式1)A < 段寄存器名>:<位移> ;(段寄器)为段地址2)A <段地址> :<位移> ;(c s) 为段地址3)A <位移> ;4)A ;以CS:100作地址功能:键入该命令后显示的地址和位移并等待用户从键盘逐条键入汇编命令。
汇编语言程序设计实验指导书
重庆师范大学涉外商贸学院计算机各专业实验用书汇编语言程序设计实验指导书(第一版)张开成编前言为适应教学内容由简到繁、由易到难、由浅入深的教学特点,我们编写了这本简易实验指导书,用以指导实验教学。
该指导书分两部分,第一部分指出实验的实验目的、实验内容、实验准备、实验要求、共提出十五个实验,需三十个学时完成。
第二部分为十五个实验的全部程序,仅供学生参考。
该实验指导书由数计学院计算机教研室张开成同志编写。
2010年2月第一部分提出各实验的实验内容、实验目的、实验要求和学时分配实验一:汇编语言基本操作实验(2学时)一、实验目的:明确QE、MASM、LINK三个系统软件的作用。
掌握汇编语言程序的编辑、汇编、连接过程。
二、实验内容:1、编写一个程序:用十进制输出一个按键的AS CⅡ值。
2、从键盘上读入两个一位数(必须保证按下数字键),输出它们的积。
三、实验准备:1、预习QE、MASM、LINK 三个软件的使用方法。
2、按实验要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成扩展名为.EXE的可执行文件。
3、运行程序。
五、实验报告要求:1、总结用QE编辑源程序的方法。
2、说明源程序的连接、汇编过程。
3、分析运行结果。
4、按要求写出完整的实验报告(必须列出程序清单)。
实验二:分支程序设计实验(2学时)一、实验目的:1、学会简单分支和多分支程序的设计方法。
2、掌握程序的调试方法。
二、实验内容:1、从键盘读入两个一位数,输出它们的积。
若为非数字键,则显示字符“E”,退出程序。
2、从键盘接收一个按键,如为小写字母,则显示“L”,是大写字母,则显示“U”,如是数字,则显示“N”,都不是则显示“*”。
三、实验准备:1、预习分支程序设计方法。
2、按实验内容要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成可执行文件.EXE。
3、运行程序。
汇编语言程序设计实验报告二
汇编语言程序设计实验报告(二)一、实验目的1)加深对循环结构的理解。
2)掌握循环程序的设计方法。
3)学习子程序的定义和调用方法。
4)掌握子程序、子程序的嵌套、递归子程序的结构。
5)掌握子程序设计、编制及调试。
6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容1)编制在屏幕上显示九九乘法表的程序。
2)编制在屏幕上显示用*组成的三角形的程序。
三、实验结果(1)(2)四、源代码(1)DA TA SEGMENTM DB 31H,32H,33H,34H,35H,36H,37H,38H,39H DA TA ENDSSTACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK1 START:MOV AX,DA TAMOV DS,AXMOV CX,9MOV DI,OFFSET MLOP1:PUSH CXMOV CX,[DI]AND CX,0FHMOV SI,OFFSET M LOP2:MOV AL,[SI]MOV DL,ALMOV AH,2INT 21HAND AL,0FHMOV BH,ALMOV DL,'*'MOV AH,2INT 21HMOV BL,[DI]MOV DL,BLMOV AH,2INT 21HMOV DL,'='MOV AH,2INT 21HAND BL,0FHMOV AL,BHMOV AH,0MOV DL,10DIV DLMOV BL,AHCMP AL,0JE NEXTMOV DL,ALADD DL,30HMOV AH,2INT 21H NEXT:MOV DL,BLADD DL,30HMOV AH,2INT 21HMOV DL,' 'MOV AH,2INT 21HINC SILOOP LOP2MOV DL,0AHMOV AH,2MOV DL,0DHINT 21HINC DIPOP CXLOOP LOP1MOV AH,4CHINT 21HCODE ENDSEND START(2)STACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1 BEGIN:MOV AH,1INT 21HMOV BL,ALSUB BL,30HMOV DL,0AHINT 21HMOV DL,0DHMOV AH,2INT 21HMOV BH,0MOV CX,BXMOV BX,1L1: PUSH CXMOV CX,BX L2: MOV DL,'*'MOV AH,2INT 21HLOOP L2MOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HADD BX,1POP CXMOV AH,4CHINT 21HCODE ENDSEND BEGIN五、实验心得这是第二次做汇编实验,首先,心理上已经没有了第一次做实验的那种茫然,知道了想要编写一个完整的程序,应当先将这一个大问题分解成若干个小的问题,找出每一个小问题所对应的解决方法,然后用代码一步一步实现,再将这一个一个的小问题串联起来,找到它们的契合点,用联系把它们组成一个完整的程序,其中最常用的就是转移指令和循环。
汇编语言程序设计实验指导
汇编语言程序设计实验指导【实验提要】以下列举的10个实验,都是以Intel的8086及后续系列微处理器的指令系统为核心,采用宏汇编工具MASM6.X以及调试工具DEBUG或DEBUG32,针对本教材所述内容进行相关的上机实践。
旨在帮助学生加深认识和理解理论教学知识,通过大量的上机实验熟悉8086CPU的指令功能、用途和使用技巧,进而提高汇编语言程序设计的能力。
(带*号的为选作内容)实验一调试工具DEBUG的应用实验目的通过实验掌握下列知识:1、8086指令:MOV,ADD,ADC,SUB,SBB,DAA,XCHG的功能;2、DEBUG命令:A,D,E,F,H,R,T,U的使用;3、BCD码、ASCII码及用十六进制数表示二进制码的方法;4、寄存器:AX,BX,CX,DX,FLAGS,IP。
内容及步骤注:本次实验可以参照教材上关于DEBUG的叙述内容进行。
一、DEBUG命令使用1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG,进入调试环境,显示提示符'-'。
2、用命令F200220'AB'将'AB'的两个ASCII码循环填入内存。
注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。
3、用命令D200观察内存中的十六进制码及屏幕右边的ASCII字符。
4、用命令F23023F12重复上二项实验,观察结果并比较。
5、用命令E2004142434445将A-E的ASCII码写入地址为200开始的内存单元中,再用D命令观察结果,看键入的十六进制数和ASCII码的对应关系。
汇编语言程序设计实验指导133 6、用H命令检查下列各组十六进制数的和与差(补码表示):(1)56H,34H(2)23H,45H(3)AB,3045H注:输入H1234则在下一行显示0046FFDE,即二者的补码和与差。
汇编语言程序设计实验2汇编源程序编写与汇编、调试
汇编语⾔程序设计实验2汇编源程序编写与汇编、调试汇编语⾔程序设计实验2 汇编源程序编写与汇编、调试⼀、实验⽬的1. 理解并掌握汇编源程序组成与结构2. 掌握汇编语⾔源程序编写→汇编→链接→调试的⼯具和⽅法3. 理解汇编源程序中地址表⽰、段寄存器的⽤法4. 理解和掌握寄存器间接寻址⽅式[bx]5. 通过汇编指令loop的使⽤理解编程语⾔中循环的本质⼆、实验内容及结果(⼀)实验任务⼀使⽤任意⼀款⽂本编辑器,编写8086汇编源程序ex1.asm。
源代码如下:assume cs:codecode segmentmov ax, 0b810hmov ds, axmov byte ptr ds:[0], 1mov byte ptr ds:[1], 1mov byte ptr ds:[2], 2mov byte ptr ds:[3], 2mov byte ptr ds:[4], 3mov byte ptr ds:[5], 3mov byte ptr ds:[6], 4mov byte ptr ds:[7], 4mov ah, 4chint 21hcode endsend要求:使⽤8086汇编程序编写、汇编、链接、运⾏、调试⽅法,对ex1.asm进⾏汇编、链接、运⾏,使⽤debug⼯具调试可执⾏⽂件。
使⽤masm、link对ex1.asm进⾏汇编、链接,得到可执⾏⽂件ex1.exe,运⾏并观察结果。
使⽤debug⼯具对程序进⾏调试使⽤debug加载可执⾏⽂件ex1.exe后,使⽤d命令查看程序段前缀PSP所占的256个字节。
结合可执⾏⽂件中寄存器CX的值,使⽤u命令对ex1.exe进⾏精确反汇编使⽤g命令执⾏到程序退出执⾏之前(即源码⽂件中line16之前),观察结果。
1、⾸先使⽤masm对*.asm⽂件进⾏编译,⽣成包含机器代码的⽬标⽂件(*.obj)编译后没有问题(截图中能看到提⽰说:0 Warning Errors和0 Severe Errors)这时候再返回到⽂件夹中就会发现多了⼀个.obj⽂件对 *.obj ⽬标⽂件进⾏连接,得到可执⾏⽂件(.exe⽂件)。
汇编语言程序设计上机实验指导
汇编语言程序设计上机实验指导一、实验目的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.提出对实验中存在问题的改进建议。
以上就是一份汇编语言程序设计上机实验指导的内容。
希望这份指导能够帮助学生们更好地进行汇编语言程序设计的实验,提高他们的实践能力和编程水平。
新版汇编语言程序设计实验指导书(精)
-T[=地址][值]
该命令从指定地址起执行n条命令后停下来,n由[值]确定。
(5显示内存单元内容的命令D,格式为:
-D[地址]或-D[范围]
(6修改内存单元内容的命令E,它有两种格式:
1用给定的内容代替指定范围的单元内容:
-E地址内容表
例如:-E 2000:0100 F3 “XYZ” 8D
实验二内存操作数及寻址方法
一.实验目的:
1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。
3、掌握简单指令的执行过程。
二.实验内容:
1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。
2逐个单元相继地修改:
-E地址
例如:-E 100:1来自E4:0100 89.78此命令是将原100号单元的内容89改为78。78是程序员键入的。
-A[地址]
该命令从指定地址开始允许输入汇编语句,把它们汇编成机
器代码相继存放在从指定地址开始的存储器中。
(2反汇编命令U,有两种格式:
1-U[地址]
该命令从指定地址开始,反汇编32个字节,若地址省略,则从上
一个U命令的最后一条指令的下一个单元开始显示32个字节。
2-U范围
该命令对指定范围的内存单元进行反汇编,例如:
汇编语言实验指导书
汇编语言程序设计实验说明书2
汇编语言程序设计实验说明书实验一DOS常用命令及8088指令使用 (1)实验二内存操作数及寻址方法 (4)实验三数据串传送和查表程序 (10)实验四屏幕字符显示程序 (12)实验五条件转移指令 (14)实验六汇编语言程序上机过程 (17)实验七分枝程序 (19)实验八多重循环程序 (21)实验九子程序 (22)实验十音乐程序 (25)实验十一数码转换程序 (27)实验一 DOS常用命令及8088指令使用实验目的:通过实验掌握下列知识:1、DOS命令: DIR,DEL,RENAME,FORMAT,COPY。
2、8088指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG3、DEBUG命令: A,D,E,F,H,R,T,U。
4、BCD码,ASCII码及用16进制数表示二进制码的方法。
5、8088寄存器: AX,BX,CX,DX,F,IP。
内容及步骤:一、DOS常用命令练习:1、将机房提供的系统盘插入A驱动器中,开机,出现提示符后打入命令FORMAT B:/S。
等屏幕上出现提示后将新盘插入B驱动器并打回车。
PC机即对新盘格式化并将糸统拷入。
2、打命令 COPY A:*。
* B 将糸统盘上全部文件拷到你的盘上。
3、将新盘插到 A驱动器中,用DIR命令查看盘上文件。
4、用命令 COPY DEBUG。
COM BUG 复制一个文件。
5、用命令 RENAME BUG BG 将BUG 文件改为BG。
6、用命令 DEL BG 将文件BG删除。
在操作时要注意提示信息,并按提示操作。
二、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。
2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。
B12040813--实验2
B12040813--实验2实验报告( 2014/ 2015 学年第一学期)课程名称汇编语言程序设计实验名称汇编语言语法练习实验时间2014 年11 月 4 日指导单位计算机学院指导教师韩崇学生姓名孙军班级学号B12040813 学院(系) 计算机学院专业软件工程实验报告结构化程序设计及实验名称指导教师韩崇应用程序设计实验类型验证实验学时 2 实验时间2014.11.4 一、实验目的和要求实验目的:使学生掌握汇编语言程序设计的基本理论和方法,熟悉汇编语言的开发工具和开发过程,加深基本概念的理解,增强实际编程能力。
实验内容:1.从BUF单元开始存有一字符串(长度<255),编程实现统计该字符串字符中的ASC码在42H~A5H之间的字符个数,并将统计结果以二进制形式显示在屏幕上。
2.用户登录验证程序的实现。
实验要求:1.掌握汇编语言语法格式以及汇编程序的编辑、汇编、链接和执行的开发全过程;2.掌握汇编语言分支,循环程序的设计。
二、实验环境(实验设备)硬件:微型计算机软件:汇编语言开发工具,如Borland公司的TASM 5.0三、实验过程描述与结果分析实验2.3.3代码:DATA SEGMENTBUF DB 255DB ?DB 255 DUP(?)CRLF DB 0DH,0AH,24H ;回车换行n DB 0 ;统计的字符数DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA BEG:MOV AX,DATAMOV DS,AXMOV AH,0AHMOV DX,OFFSET BUFINT 21HMOV AH,9MOV DX,OFFSET CRLFint 21hMOV SI,OFFSET BUFINC SIMOV CL,[SI] MOV CH,0 INC SILAST1: MOV AL,[si] CMP AL,42H JB NO_1 CMP AL,45H JA NO_1INC NNO_1:INC SI LOOP LAST1 MOV AL,N MOV CX,8D_NEXT: ROL AL,1 PUSH AX MOV AH,2 JC DISP_1 MOV DL,'0' JMP DISPDISP_1:MOV DL,'1'DISP:INT 21HPOP AXLOOP D_NEXTMOV AH,4CHINT 21HCODE ENDSEND BEG实验2.3.3结果:实验3.3.8代码:;FILENAME:EXA131.ASM .486CRLF MACRO ;宏定义MOV AH,0EHMOV AL,0DH ;回车INT 10HMOV AL,0AH ;换行INT 10HENDMOUTX MACRO X ;显示字符串XMOV AH,09HMOV DX,OFFSET XINT 21HENDMDATAS SEGMENT USE16BUF1 DB 'B12040821'BUF2 DB '12345'IN1 DB 20 DUP(?)IN2 DB 20 DUP(?)OUT1 DB 'please enter the username and password!','$'OUT2 DB 'USERNAME:','$'OUT3 DB 'PASSWORD:','$'OUT4 DB '*','$'OUT5 DB 'ERROR!','$'OUT6 DB '----------WELCOME BACK!----------','$' ;此处输入数据段代码DATAS ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATAS,ES:DATAS START:MOV AX,DATASMOV DS,AXMOV ES,AXOUTX OUT1CRLFOUTX OUT2MOV BX,OFFSET IN1MOV CX,20LAST1:MOV AH,01H ;输入一个字符INT 21HMOV BYTE PTR [BX],ALCMP AL,0DHJZ JUMP1INC BXLOOP LAST1JUMP1:CRLFOUTX OUT3MOV BX,OFFSET IN2MOV CX,20LAST2:MOV AH,07H ;输入一字符,无回显INT 21HMOV BYTE PTR [BX],ALCMP AL,0DHJZ JUMP2INC BXOUTX OUT4LOOP LAST2JUMP2:CRLFCMP1: MOV SI,OFFSET IN1MOV DI,OFFSET BUF1MOV CX,9CLDREPE CMPSBJZ CMP2OUTX OUT5JMP EXITCMP2:MOV SI,OFFSET IN2MOV DI,OFFSET BUF2MOV CX,5CLDREPE CMPSBJZ SUCCESSOUTX OUT5JMP EXIT SUCCESS: OUTX OUT6 EXIT: MOV AH,4CHINT 21HCODE ENDSEND START实验3.3.8结果:实验报告四、实验小结(包括问题和解决方法、心得体会、意见与建议等)这次实践要求我们把课本上各章节的内容学懂,学透,融会贯通才能达到课题的要求。
单片机实验——汇编语言2指令
成绩单片机原理及应用实验报告实验名称汇编语言指令实验班级姓名学号(后两位)指导教师实验日期实验一汇编语言指令一、实验目的1、掌握WAVE软件的使用,初步掌握程序的调试方法,包括跟踪、单步运行和断点设置等。
2、熟悉MCS-51单片机的指令系统。
二、实验内容完成以下内容:1、假定外部数据存储器2000H单元的内容为80H,执行下列指令后,累加器A中的内容是( 80H ):MOV DPTR,#2000HMOVX A,@DPTR注意:完成本实验,需完成题目的“假定”条件,将外部数据存储器2000H单元预先赋值,如何实现?2、执行下列指令后,(SP)的内容是(62H ),61H单元的内容是(25H ),62H单元的内容是( 80H).MOV SP,#60HMOV ACC,#25HMOV B,#80HPUSH ACCPUSH B3、执行下列指令后,A的内容是(34H),CY的内容是(1),AC的内容是(1),OV的内容是(1)。
MOV A,#85HMOV R0,#20HMOV 20H,#0AFHADD A,@R04、假定(A)=0FFH,执行下列指令后,A的内容是(1EH ),R3的内容是(10H ),30H的内容是(OF1H或241),40H的内容是(01H )。
MOV R3,#0FHMOV 30H,#0F0HMOV R0,#40HMOV 40H,#00HINC AINC R3INC 30HINC @R05、假定(A)=059H,(R5)=73H,执行下列指令:ORG 0000HMOV A,#059HMOV R5,#73HADD A,R5DA AEND后,A的内容是(),CY的内容是()。
6、程序如下:MOV A, #0BFHMOV 20H, #85HSETB CADDC A, 20H结果为:(A)= 46H CY=1 AC=1 OV=1 P=17、程序如下:MOV A, #0BFHMOV 20H, #85HSETB CSUBB A, 20H结果为:(A)= CY= AC= OV= P=8、假定(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,执行下列指令:ORG 0000HMOV A,#0FHMOV R7,#19HMOV 30H,#00HMOV R1,#40HMOV 40H,#0FFHDEC ADEC R7DEC 30HDEC @R1END后,A的内容是(),R7的内容是(),30H的内容是(),40H的内容是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序流程图
开始
定义数据
装载循环计数器cx
装载地址指针si
bx清0,存放累加和
Data>=20
计算行李托运费
结束
;cj35.asm
include ylib.h
data segment
rating db 20 ;每人携带行李的标准
number db 5
kilometre db 10 ;公司所在在地到乙地的距离
weight db 27,39,28,21,27;每人的行李重量大于等于20
;db 23,34,25,23,45
;db 40,20, 30, 50, 43
;db 23, 32, 33, 45, 21
;db 33, 24, 34, 35, 26
extraprc dw 29
prmtmess db 13,10,'the total spend is $'
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data ;load ds
mov ds,ax
mov cl,number ;装载循环计数器cx
mov ch,0
lea si,weight ;装载地址指针si
mov bx,0 ;bx清0,存放累加和
next:
mov al,[si] ;取数
sub al,rating ;减去免费托运行李重量
mul extraprc ;计算每公里行李托运费
mul kilometre ;计算全程行李托运费
add bx,ax ;累加
inc si ;指针加1,指向下一个数据
loop next ;循环
;
mov ax,bx ;除以50,恢复元
mov bl,50
div bl
lea dx,prmtmess ;输出总的行李托运费
call writedec
call crlf
;
mov ax,4c00h ;程序结束,返回
int 21h
code ends
end start
测试序号测试数据预期输出结果实际输出结果测试结果
1 23,34,25,23,45 290 290
2 40,20, 30, 50, 4
3 481 481
3 23, 32, 33, 45, 21 313 313
4 33, 24, 34, 35, 26 301 301
5 27, 39, 28, 21, 27 243 243。