汇编实验二报告
汇编语言实验报告
合肥工业大学实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一. 实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二. 实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三. 实验过程和程序基础题:1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
附加题:1. 从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x2. 完成BX中1的个数的统计。
3. 用串操作指令将DS:0000开始20个字节初始化为:0CCH。
并将这20个字节的内容复制到其后的20个字节里。
四. 实验结果(包括必要的截图)基础题 1:基础题 2:附加题 1:附加题 2:附加题 3:五. 实验体会1. 在汇编语言中,变量的其实都是地址。
2. 在Debug中,数值都是16进制的。
3. 在读写内存中的数据时,必须指出数据类型是byte还是word。
【实验】汇编实验报告
【关键字】实验实验一汇编程序的汇编及运行1.实验目的和要求(1)熟悉汇编程序的汇编、连接、执行过程(2)生成LST文件,查看LST文件(3)生成OBJ文件,修改语法错误(4)生成EXE文件(5)执行2.实验环境IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录(1)将数据段输入,取名1.txt,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DA TA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND(2)输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)DA TA SEGMENTV AR1 DB 0, 25, ODH, 300V AR2 DB 12H, A4H, 6BHV AR3 DB ’ABCDEF’V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DA TABEING MOV AX, DA TAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET V AR2MOV [SI], 0ABHMOV AX, V AR1+2MOV [BX], [SI]MOV V AR5+4, V AR4MOV AH, 4CHINT 21HCODE ENDSEND START(3)输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATAS START:MOV AX, DA TASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START 1.算法描述及实验步骤1.(1)生成1.st文件(2)用EDIT查看文件2.修改后正确算法:DATA SEGMENTV AR1 DB 0, 25, 0DH, 30V AR2 DB 12H, 0A4H, 6BHV AR3 DB 'ABCDEF'V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATA BEING: MOV AX, DATAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET V AR2MOV byte ptr[SI], 0ABHMOV AL, V AR1+2MOV AX, [SI]MOV [BX], AXMOV AX, V AR4MOV V AR5+4, AXMOV AH, 4CHINT 21HCODE ENDSEND BEING5.调试过程1.程序没有错误,结果:2.程序运行出现错误:问题及改正:(1). 2.asm(2): error A2009: Symbol not defined: ODH 表示没有定义ODH;出错语句VAR1 DB 0, 25, ODH, 300,这里的 ODH应该为 16进制数的0DH。
汇编实验报告
实验一Debug程序的使用一.实验目的1.熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2.掌握8086/8088的寻址方式及多字节数据的处理方法。
二.实验内容1.利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2.分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三.实验过程和程序直接寻址寄存器间接寻址四.实验结果(包括必要的截图)五.实验体会通过实验了解到汇编语言的编译、运行方法。
汇编语言的寻址方式有直接寻址,寄存器寻址,基址变址寻址,相对基址变址寻址等等,掌握这些都是编写汇编程序很重要的环节。
在编写汇编程序时,应该注意特别容易出现的错误特别是通过亲自实验,体验到了对内存、寄存器的修改和使用,加深了对内存寻址和寄存器间接寻址的理解,正确认识了在寄存器名中加入“[ ]”的作用。
实验二汇编语言程序设计(顺序、循环)一.实验目的1.掌握顺序和循环程序结构和设计方法;2.熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。
二.实验内容1.X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。
试编写汇编语言程序完成以下功能:①计算表达式值(V–(X*Y+Z-720))/X;②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。
2.求一个班50名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来)3.从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:查找中间是否有‘asm’子串。
北京理工大学汇编实验二报告
北京理工大学汇编实验二报告本科实验报告实验名称:算术运算类操作实验课程名称:CPU与汇编实验实验时间:2015.10.29 任课教师:王耀威实验地点:10-102实验教师:潘丽敏实验类型:□原理验证■综合设计□自主创新学生姓名:王晓玥学号/班级:1120131332/05111311 组号:学院:信息与电子学院同组搭档:专业:信息工程成绩:一、实验要求和目的1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;2、掌握各类运算类指令对各状态标志位的影响及测试方法;3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;4、熟悉无符号数和有符号数乘法和除法指令的使用;5、掌握符号位扩展指令的使用。
6、掌握 BCD 码调整指令的使用方法二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识1、加减法处理指令主要有加法指令 ADD,带进位加法 ADC,减法指令 SUB,带进位减法指令 SBB。
2.乘除法指令和符号位扩展指令主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令 IDIV,以及符号位从字节扩展到字的指令 CBW 和从字扩展到双字的指令 CWD。
3.BCD 码的调整指令主要有非压缩的BCD 码加法调整指令DAA,压缩的 BCD 码减法调整指令 DAS,非压缩的 BCD 码加法调整指令 AAA,非压缩的 BCD 码减法调整指令 AAS,乘法的非压缩 BCD码调整指令 AAM,除法的非压缩 BCD 码调整指令 AAD。
8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表 1 所示的数据类型进行数据运算。
表 1-2-1 数据类型数据运算表数制二进制BCD码带符号无符号组合非组合运算符+、-、×、÷+、-+、-、×、÷操作数字节、字、多精度字节(二位数字)字节(一位数字)四、实验内容与步骤1、对于两组无符号数,087H 和 034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:(1)实验流程将一组操作数分别用ADD,SUB,MUL,DIV运算(2)实验代码:DATAS SEGMENTBUF1 DB 087HBUF2 DB 034HBUF3 DB 4 DUP(?);此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV AX,0MOV SI,AX;两数相加MOV AL,BUF1MOV BL,BUF2ADD AL,BLMOV BUF3[SI],ALMOV AL,0MOV AL,0INC SIMOV BUF3[SI],AL;两数相减MOV AL,BUF1MOV BL,BUF2SUB AL,BLINC SIMOV BUF3[SI],ALMOV AL,0SBB AL,0INC SIMOV BUF3[SI],AL;两数相乘MOV AL,BUF1MOV BL,BUF2MUL BLINC SIMOV BUF3[SI],ALINC SIMOV BUF3[SI],AH;两数相除,AL中存放商,AH中存放余数MOV AX,0MOV AL,BUF1MOV BL,BUF2DIV BLINC SIMOV BUF3[SI],ALINC SIMOV BUF3[SI],AH;此处输入代码段代码MOV AH,4CHINT 21HCODES ENDSEND START(3)实验结果:1)第一组操作数87H,34H2)第二组操作数0C2H,5FH(4)计算结果计算状态标志表达式结果CF AF ZF OF SF PF 087H+034H 00BB 0 0 0 0 1 1 087H-034H 0053 0 0 0 1 0 1 087H*034H 1B6C 1 0 0 1 0 0 087H/084H 02(1F) 1 0 0 0 0 1 0C2H+05FH 0121 0 0 0 0 0 0 0C2H-O5FH 0063 0 0 1 0 0 1 0C2H*05FH 47FE 0 0 0 0 0 1 0C2H/05FH 02(04) 0 0 0 0 0 0(5)各运算对状态标志位的影响及其意义。
《汇编语言》实验报告
《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。
实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。
汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。
本实验通过编写汇编语言程序,加深对汇编语言的理解。
二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。
2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。
3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。
b.设置段寄存器,将数据段地址加载到DS寄存器中。
c.设置显示模式和光标位置。
d.将字符串逐个字符输出到屏幕上。
e.关闭显示模式。
4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。
5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。
三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。
通过程序分析和调试过程,加深了对汇编语言的理解和掌握。
四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。
通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。
同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。
在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。
总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。
汇编语言实验报告..【范本模板】
汇编语言课程设计学院:专业:姓名:学号:汇编语言是计算机专业的一门重要的专业基础课,主要介绍汇编语言程序设计的基本原理和方法.汇编语言是一门理论性和实践性较强的课程,辅助课堂教学的实验有助于帮助学生理解汇编语言的基本原理,锻炼学生的动手能力,提高学生的综合应用知识的能力。
目录1 利用DEBUG调试汇编语言程序段………………………………………2 初级程序的编写与调试实验(一) .................................................................................3 初级程序的编写与调试实验(二)………………………………………...4 汇编语言程序上机过程 .......................................................................................................... 5分支程序实验……………………………………………………………6 循环程序实验…………………………………………………………….。
1 利用DEBUG调试汇编语言程序段一.课程目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段.二.课程内容1.进入和退出DEBUG程序;2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)例1:-D1002)E命令(修改指定内存)例1:—E100 41 42 43 44 48 47 46 45-D 100,L08结果:08F1:0100 41 42 43 44 48 47 46 45例2:—E 100:08F1:0100 76 42 :42是操作员键入此命令是将原100号内存内容76修改为42,用D命令可察看。
3)R命令(显示当前寄存器的内容)4)T命令(设置陷井,单步执行)5)A命令(将指令直接汇编成机器码输入到内存中。
汇编语言实验报告
汇编语言实验报告实验一汇编语言的源程序的输入一、实验目的1.通过实验了解和熟悉微机系统的配置2.学习在DEBUG状态下输入汇编源程序的方法3.初步掌握调试(在DEBUG状态下)的过程二、实验原理1.本实验在DEBUG状态下输入汇编源程序,并且用DEBUG命令进行调试,用单步跟踪的方法试验指令的功能;2.以下是给定的参考程序,并在实验时每条指令的“;”等号右边按要求填写指令的分析结果。
三、实验步骤1.开机后进入DOS系统2.用DEBUG的REGISTER命令检查所有寄存器内容,并作记录R[寄存器名]3.用DEBUG的ASSEMBLE命令输入汇编源程序A[内存地址]4.用DEBUG的UNASSEMBLE命令反汇编U[起始地址][终止地址]5.用DEBUG的TRACE命令单步跟踪程序T[起始地址][终止地址]6.用DEBUG的DUMP命令显示存贮器单元的内容四、参考程序及结果MOV AX,2000 ;AL=00MOV DS,AX ;DS=2000NOT AX ;AX=DFFFXOR AX,AX ;AX=0000DEC AX ;AX=FFFFINC AX ;AX=0000MOV BX,2030 ;BH=20MOV SI,BX ;SI=2030MOV [SI],BL ;[2030H]=30MOV WORD PTR[SI],10F ;[2030H]=0F [2030H]=01 MOV DI,SI ;DI=2030MOV [DI+50],BH ;[DI+50]=20MOV BH,[SI] ;BH=0FMOV BL,[DI+50] ;BL=20MOV SP,5000PUSH AX ;AX=0 [SS:4FFEH]=00H [SS:4FFFH]=00H PUSH BX ;BX=0F20 [SS:4FFCH]=20H [SS:4FFDH]=0FH POP AX ;AX=0F20POPF ;F=00000000NEG BX ;BX=F0E0XCHG BX,AX ;BX=0F20STD ;F=01010001STI ;F=01110001CLD ;F=00110001CLI ;F=00010001ADC DI,2050 ;DI=4081 F=00000010ADC SP,DI ;SP=9081 F=10010010ADC AX,1500 ;AX=05E0 F=00000001SUB AX,BX ;AX=F6C0 BX=0F20SHL AH,1 ;AH=ECRCL AX,1 ;AX=D981SHR BX,1 ;BH=07RCR BL,1 ;BL=90MOV CL,4MOV DX,80F0ROL DX,CL ;DX=0F08 CL=04INT 20 ;CS=00A7 IP=1072实验二数据的建立与传送程序一、实验目的1.学习DEBUG命令2.验证指令的功能二、实验原理在DEBUG状态下,输入程序,用G命令进行连续方式执行程序,用DUMP命令查看建立的数据块内容三、参考程序及结果1.在内存1000单元开始,建立00H~0FH~00H 31个数,要求00H~0FH数据逐渐增大,0FH~00H逐渐减小,程序从内存CS:0100H地址开始输入MOV AX ,100HMOV DS ,AXMOV SI,0MOV CL ,0FHXOR AX,AXPPE1: MOV [SI] ;ALINC SI ;INC ALDEC CLJNZ PPE1MOV CX,10HPPE2:MOV[SI],ALINC SIDEC ALLOOP PPE2INT 20H数据块的内容1000:0000:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:0100:0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 002.把上一程序的执行结果分几种方式传送到以下指定区域(a)该程序从内存CS:0150H开始输入,把数据块传送到15050H 开始的存储区域中MOV AX,1000HMOV DS,AXMOV SI,0MOV DI,5050HMOV CX,1FHPPEA: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP PPEAINT 20H结果:1000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(b)用串传送指令MOVSB,把数据块传送到15150H开始的区域,该程序从内存CS:0200H开始输入MOV AX,100HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5150HMOV CS,1FHCLDPPEB: MOVSBLOOP PPEBINT 20H结果:1000:5150 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5160 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(C)用重复串操作指令”REP MOVSB”把数据传送到15250H开始的区域,该程序从CS:250H地址开始输入MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5250HMOV CX,1FHCLDREPZMOVSBINT 20H结果:1000:5250 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5260 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(c)用串操作的减量工作方式,把数据传送到25050H开始的区域,该程序从CS:0300H开始输入MOV AX,1000HMOV DS,AXADD AX,AXMOV ES,AXMOV SI,1EHMOV DI,506EHMOV CX,1FHSTDREP MOVSBINT 20H结果:2000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 2000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00实验四统计学生成绩程序一、实验目的进一步掌握分支程序和循环程序的编写方法二、实验原理设有10个学生的成绩分别为56,69,84,82,73,88,99,63,100和80分。
汇编语言实验报告二
汇编语言实验报告)(实验二实验二)一.实验目的1.掌握程序设计中的3种基本结构(顺序结构、选择程序、循环程序)。
2.熟练使用汇编语言的指令:数据传送类指令、数据运算类指令、逻辑判断类指令与转移指令、循环指令等。
3.初步了解系统功能调用的使用方法,尝试使用01H号功能调用进行字符输入的方法及使用02H号功能调用进行字符输出(显示)的方法。
二.程序说明1.计算1+2+3+…+10,将结果显示在屏幕上。
2.利用01H号功能调用输入10个一位数字,并将其由ASCII码转换为二进制数,依此保存到变量BUF的10个字节中,变量BUF的形式为BUF DB 10 DUP(?)。
编程求出这10个数中的最大数和最小数,将最大数存入MAX单元、最小数存入MIN单元,并将其在屏幕上显示出来。
三.设计思想1、先将1-10循环求和,为了将结果显示在屏幕上,需要讲计算后保存在ax中的结果以十进制形式输出,可以将结果的两位数分别存于低位和高位中,即除以10取整和余al是商,ah是余数,后加上30h。
2、使用si寄存器,用于在存储器中寻址。
利用循环输入10个数字,将10个数比较,大的放在al,小的放在bl。
利用01号功能,输出。
四.程序代码程序一code segment main proc far assume cs:code start: push ds sub ax,ax push ax mov bx,0ah mov cx, 0ah sum1: add ax,bx dec bx loop sum1 printit: mov bl,10 div bl add al,30h mov ch,ah mov dl,al mov ah,2 int 21h add ch,30h mov dl,ch mov ah,2 int 21h ret main endp code ends end 程序二程序二data segment ;数据段定义开始数据段定义开始buf db 10 dup(?) ;数据定义及其存储空间数据定义及其存储空间 max db ? min db ? Str1 db 0DH,0AH,'Please input: ','$' ;定义Str1的内容的内容 Str2 db 0DH,0AH,'MAX:','$' ;定义Str2的内容的内容 Str3 db 0DH,0AH,'MIN:','$' ;定义Str3的内容的内容 data ends ;数据段定义结束数据段定义结束Stack segment stack ;堆栈段定义开始堆栈段定义开始db 10 dup(?) stack ends ;堆栈段定义结束堆栈段定义结束code segment ;代码段定义开始代码段定义开始main proc far assume cs:code,ds:data,ss:stack start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov ax,stack mov ss,ax mov cx,10 mov si,0 ;寄存器,用于寻址寄存器,用于寻址mov bx,0 lop1: lea dx,Str1 mov ah,09 int 21h mov ah,01h ; 输入输入int 21h mov buf[si],al inc si loop lop1 ;返回循环1 mov cx,9 mov si,0 mov al,buf[si] mov bl,al lop2: inc si mov dl,buf[si] cmp dl,al jl compare1 mov al,dl compare1: cmp bl,dl ;比较,小的数放在bl jl compare2 mov bl,dl compare2: loop lop2 mov max,al mov min,bl lea dx,Str2 mov ah,09 int 21h mov dl,max mov ah,02h int 21h ;输出最大数输出最大数lea dx,Str3 mov ah,09 int 21h mov dl,min mov ah,02h int 21h ;输出最小数输出最小数ret main endp code ends end start 五. 结果分析并回答: 1. 设计的程序包含了几个段设计的程序包含了几个段 2. 你的代码经过编译和连接之后,总共占用多少个字节你的代码经过编译和连接之后,总共占用多少个字节3. 调用DEBUG 进行反汇编,查看程序的第一条指令的地址码是多少?最后一条指令的地址码是多少?指令的地址码是多少?4. 对于第2题,怎样修改程序可以同时实现将10个数字的累加功能个数字的累加功能5.对于第2题,若要求输入的是两位数,又该怎么办?题,若要求输入的是两位数,又该怎么办? 程序一:运行结果运行结果1、本程序包含了一个段,即为代码段、本程序包含了一个段,即为代码段2、代码经过编译和连接之后,共占32个字节个字节3、第一条指令的地址码、第一条指令的地址码最后一条指令的地址码最后一条指令的地址码程序二运行结果运行结果1、本程序包含了数据段、堆栈段和代码段三个段。
汇编语言实验报告
实验报告一:汇编语言实验基础一.实验目的:1. 熟悉汇编语言程序的开发过程以及汇编语言常用软件的使用方法2. 掌握DEBUG常用命令的使用方法二、实验内容:1.DEBUG 命令使用2.8088常用指令练习三、实验步骤:(一)DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示符'_ '。
2、用命令 F 100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D 100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令 F 110 11F 41 重复上二项实验,观察结果并比较。
5、用命令 E 100 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,347FH7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
(二)8088常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序,特别注意左边的机器码。
3)用T命令逐条运行这些指令,注意有关寄存器及IP的变化情况。
并注意标志位有无变化。
2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。
汇编实验2
汇编实验2.1-2.4软件工程20091120183 李铮2.1数据传送指令的使用1.实验目的:负责把数据、地址或立即数传送到寄存器、存储单元以及I/O端口,或从内存单元、I/O端口中读取数据。
可以分为下面几类:1. 通用传送指令:MOV,PUSH,POP,XCHG,XLA T2. 输入输出指令指令: IN,OUT3. 目的地址传送指令: LEA,LDS,LES4. 标志位传送指令: LAHF,SAHF,PUSHF,POPF2.实验步骤:1. 传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
2.改变标志寄存器psw中tf标志的状态(0——1或1——0),其余位保持不变。
3. 设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。
在DEBUG状态下使用A 命令送入下面程序,并用单步T命令执行的方法,分析每条指令源地址的形成过程?当数据传送每完成一次,试分析AX寄存器中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]HLT4. 使用标志位传送指令,编程序段将标志位寄存器的低八位的值存入内存单元DS:1000H 中或堆栈中,然后将标志位寄存器的低八位置位为10101010。
2.2算术逻辑运算和移位指令的使用1.实验目的:使用算术逻辑运算和移位指令,可以实现对二进制数据的加、减、乘、除等四则运算,与、或、非、异或等逻辑运算,以及移位运算和代码转换运算。
Thumb汇编指令实验二
Thumb汇编指令实验二实验目的通过实验掌握ARM处理器16位汇编指令的使用方法。
实验设备●硬件:PC机。
●软件:ADS1.2集成开发环境,Windows 2000/XP/2003。
实验内容●使用Thumb汇编语言,体会ARM与Thumb的区别。
●使用伪指令,加深对伪操作的理解。
实验原理(1) ARM与Thumb的混合编程所有的ARM指令都是可以条件执行的,而Thumb指令仅有一条指令(B指令)具备条件执行功能。
所以很多应用程序需要两者的混合编程,因此存在ARM与Thumb状态之间相互切换,而且相互之间的状态切换的开销几乎为零。
由于ARM处理器总是从ARM状态开始执行,故Thumb指令的执行必须由ARM状态转向Thum b状态,通常BX指令完成。
另外在Thumb指令前必须有CODE16伪指令指示汇编器以下指令为Thumb指令。
下面是一段直接进行状态切换的代码。
AREA AddReg,CODE,READONLYENTRYCODE32 ;程序从ARM状态开始ADR R0, ThumbProg+1 ;跳转到ThumbProg。
这里为什么要加1呢?因为BX指令;跳转到指定的地址执行程序时,若(BX{cond} Rm)Rm;的位[0]为1,则跳转时自动将CPSR中的标志T置位即把;目标代码解释为Thunb代码。
BX R0 ;程序切换到Thumb状态CODE16 ;CODE16指示编译器后面为Thumb指令ThumbProg MOV R2, #2MOV R3, #3ADD R2, R2, R3ADR R0, ARMProgBX R0 ;跳转到ARMProg,程序切换到ARM状态CODE32 ;CODE32指示编译器后面为ARM指令ARMProg MOV R4, #4MOV R5, #5ADD R4, R4, R5Stop MOV R0, #0x18 ;软中断参数设置LDR R1, =0x20026 ;软中断参数设置SWI 0x123456 ;将CPU的控制权交给调试器END实验参考程序见课本page83-84:(1)ARM指令编写的“hello world”程序;(2)Thumb指令编写的“hello world”程序。
汇编语言实验报告2 - 寻址方式的综合应用及转移指令的原理
一、实验目的1.定位内存单元的寻址方式汇总2.寻址方式的综合应用3.转移指令的分类和原理4.熟悉在显存中编程的方法二、实验内容及要求(一)寻址方式的汇总及综合应用1. 定位内存单元的寻址方式有几种,并举例说明。
2. 寻址方式在结构化数据访问中的应用。
Power idea公司从1975年成立一直到1995年的基本情况如下。
年份收入(千美元) 雇员人均收入(千美元) 1975 16 3 ?1976 22 7 ?1977 382 9 ?1978 1356 13 ?1979 2390 28 ?1980 8000 38 ?M1995 5937000 17800 ?下面的程序中,已经定义好了这些数据:assume cs:codesgdata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995';年份dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;公司总收入dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800;公司雇员人数data endstable segmentdb 21 dup('year summ ne ??')table ends编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。
实验二-简单并行接口-实验报告
3、按下面图二简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。
图一 图二
三、实验中使用到的程序
对于简单并行输出接口:
stack1 segment stack 'stack'
dw 32 dup(0)
stack1 ends
data segment
baseport equ 0ec00h-280h;实际基址
信 息 学 院
《汇编语言与接口技术》上机实验报告
学号:104100197
姓名:王飞
班级: 计科10C
课程名称: 汇编语言与接口技术
上机内容 简单并行接口
实验性质: □ 综合性实验 □ 设计性实验 ■ 验证实验
实验时间: 2012年5 月18 日
实验地点:睿智4号102室
实验设备 TPC—2003A微机实验箱
out dx,al
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
jmp again
exit: mov ah, 4ch
int 21h
code ends
end start
对于简单并行输入接口:
stack1 segment stack'stack'
汇编器实验报告
汇编器实验报告篇一:汇编实验报告实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为ABC。
DATA SEGMENTBUFDB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH CN EQU $-BUFDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: PUSH DSXOR AX,AXPUSH AXMOVAX,DATAMOV DS,AXMOV BX,OFFSET BUF MOV CX,CNDEC CXMOV AL,[BX]INC BXLP:CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。
1图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在DOS状态下,采用宏汇编程序MASM 对源程序文件进行汇编,其操作过程如图2所示。
微机实验二 熟悉汇编程序建立及其调试方法
微机原理实验报告实验二熟悉汇编程序建立及其调试方法一、实验目的1.熟悉汇编语言源程序的框架结构,学会编制汇编程序。
2.熟悉汇编语言上机操作的过程,学会汇编程序调试方法。
二、实验内容1.学习编写汇编语言源程序的方法,了解数据存放格式。
2.阅读给出的程序,找出程序中的错误。
3.通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立、汇编、链接、调试、修改和运行等全过程。
三、修改后的程序STACKSG SEGMENT PARA STACK'STACK' ;定义堆栈段DB 256 DUP (?) ;堆栈段为256个字节空间,STACKSG ENDSDATASG SEGMENT PARA 'DATA' ;设置数据段BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512;定义数据段有20个字的数据 DW 23, 56, 420, 75, 0,-1024,-67,39,-2000COUNT EQU 20 ;定义计数次数常量COUNT等于20MAX DW ? ;保留1个字空间,用以存放最大值结果DATASG ENDSCODESG SEGMENT ;代码段ASSUME SS : STACKSG, CS : CODESG ;STACKSG为堆栈段CODESG为代码段ASSUME DS : DATASG ;DATASG为数据段ORG 100H ;指令语句的起始偏移量为100HBEGIN: MOV AX, DATASG ;保存最大值结果MOV DS,AX ;给段寄存器赋值LEA SI,BLOCK ;将SI设为指向数据的指针MOV CX,COUNT ;设置循环次数,CX中装入计数初值DEC CX ;CX循环次数减1MOV AX,[SI] ;从内存取数到AXCHKMAX: ADD SI,2 ;取完一次数据,地址偏移量加2CMP [SI],AX ;数据指针当前所指单元的值与 AX比较JLE NEXT ;取其中较大者存于AX中MOV AX,[SI]NEXT: LOOP CHKMAX ;与数据段最后一个数据比较后跳出循环MOV MAX,AX ;保存最大值到MAXMOV AH,4CH ;退出程序INT 21HCODESG ENDSEND BEGIN程序的功能:输入20个数,比较出数值最大的一个数。
汇编实验报告
实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为ABC。
DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。
图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。
汇编实验报告,(例文)
汇编实验报告,(例文)《汇编语言程序设计》实验报告2021年11月★★FGL实验一:汇编语言运行环境及方法、简单程序设计I:实验要求:1、绘制程序流程图2、结合你的调试过程,整理其中用到的debug命令的使用方法和效果截图,并解释每一步骤的结论3、调试中遇到的问题及解决方法 II:具体实验过程:a.程序流程图1、开始输入源程序根据实验步骤进行汇编比较string1与string2输出NO输出Match结束b.调试过程及debug命令使用方法·-u命令反汇编:·-g0b·-d0:查看数据段内容·-g:执行完程序显示结果根据数据段显示的数据内容可知,在;两字符串分别为"Movethecursorbackward."和"Movethecursordackward.",因而可根据debug命令中的-e将第二个字符串中的d修改为b则可使结果显示为MATCH!具体步骤如下:如下图所示,对内存中1436:0029的存储单元进行-e29命令修改的前后数据的显示,可看到已经将d修改为b,从而-g命令运行的结果是Match.(注:-a 和-f命令亦可修改数据区内容但使用时有一定的区别)·-q命令退出debug调试:·-t命令的单步调试:(该过程中IP不断变化着)实验二:用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等I:实验要求:1、任务1的指令序列2、整理本次试验中用到的debug命令的使用方法及效果截图II:实验目的:1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。
3、掌握简单指令的执行过程。
III:实验内容:任务一、设堆栈指针SP=2021H,AX=3000H,BX=5000H;请编一程序段将AX 和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
【最新推荐】汇编实验报告2word版本 (6页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==汇编实验报告2篇一:汇编实验报告 2汇编语言与接口课程实验报告实验名称循环与分支程序设计实验室名称班级________________软件93_______________ 学号_______________09161059_______________ 实验日期年月日评分教师实验报告成绩__________ 评分日期________年_______月________日一、二、实验目的实验环境实验内容熟悉汇编语言上机环境Masm以及上机过程,学会设计循环与分支程序;掌握基本的输入输出及Debug调试。
编程环境:Masm for windows 集成实验环境 201X 三、预习:了解循环程序的结构形式,掌握DO_WHILE结构和DO_UNTIL结构学会设置循环的初始状态、循环体和循环控制部分,掌握LOOP等指令了解分支程序的结构形式,掌握一般的控制转移指令及跳跃表法实验题目:1. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来2. 试编制一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中3. 试编写一汇编语言程序,要求从键盘接收一个4位的十六进制数,并在终端上显示与它等值的二进制数实验步骤:实验一主要步骤:从键盘接收一个字符,判断是否为’0’,若是则退出;否则判断该字符是否介于’a’和’z’之间,若是输出空格,并给该字符减去20H后输出,再输出回车换行进行下一次操作,否则直接回车换行进行下次操作。
实验二主要步骤:循环初始设置,将最大的奇数FFFF赋给AX(无符号),BX设为0(采用寄存器相对寻址法),CX设为100,循环100次;从数组读取一个字到DX中,TEST若最后一位为1则进行下次循环,否则与AX进行比较,如果小则交换,否则进行下次循环实验三主要步骤:循环四次从键盘接收四个字符并将其存放到一个数组中,每次判断如果字符为’Q’,则退出,介于’0’到’9‘之间,减去30H,介于’A’到‘F’之间减去37H;然后对每个字节分别向右移动3、2、1、0位,与0x01相与后输出四、源程序清单、测试数据、运行结果实验一(1) 源程序清单START:MOV AX,DATASMOV DS,AX;此处输入代码段代码 NEXT:MOV AH,01H INT 21H CMP AL,'0' JZ EXIT CMP AL,'a' JL NEXT1 CMP AL,'z' JG NEXT1 MOV BL,AL MOV DL,20H MOV AH,02H INT 21HSUB BL,20H MOV DL,BL MOV AH,02H INT 21H NEXT1:MOV DL,0AH MOV AH,02H INT 21HMOV DL,0DH MOV AH,02H INT 21H JMP NEXT EXIT:MOV AH,4CHINT 21H(2) 运行结果:实验二(1) 源程序清单: START:MOV AX,DATAS MOV DS,AX;此处输入代码段代码 MOV AX,0FFFFH MOV CX,100 MOVBX,0LOOP1:MOV DX,DATA[BX] TEST DX,0001H JNZ NEXT CMP DX,AX JGE NEXT MOV AX,DX NEXT:ADD BX,2 LOOP LOOP1 MOV AH,4CHINT 21H(2) DEBUG调试:实验三(1)源程序清单 START:MOVAX,DATAS篇二:汇编第2次上机实验报告汇编语言上机实验报告时间: 201X-4-19,19:00-21:30 地点:南一楼803室实验人员:王涛实验一一、题目从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等,相等显示“MATCH !”, 不相等显示“NO MATCH !”。
汇编实验报告终
实验一汇编语言源程序的输入一、实验目的1.通过实验了解和熟悉微机系统的配置。
2.学习在DEBUG状态下输入汇编源程序的方法。
3.初步掌握调试(在DEBUG状态下)的过程。
二、实验原理1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。
用单步跟踪的方法验证指令的功能。
2. 以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行结果。
注:⑴微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”;⑵在DEBUG状态下执行程序时,“INT 20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CS和IP寄存器原来的值。
参考程序:MOV AX, 2000 ; AL= 00HMOV DS, AX ; DS= 2000HNOT AX ; AX= DFFFHXOR AX, AX ; AX= 0000HDEC AX ; AX= FFFFHINC AX ; AX= 0000HMOV BX, 2030 ; BH= 20HMOV SI, BX ; SI= 2030HMOV [SI], BL ; [2030H]= 30HMOV WORD PTR[SI], 10F ; [2030H]= 0FH[2031H]= 01H MOV DI, SI ; DI= 2030HMOV [DI+50], BH ; [DI+50H]= 20HMOV BH, [SI] ; BH= 0FHMOV BL, [DI+50] ; BL= 20HMOV SP, 5000PUSH AX ; AX= 0000H[SS:4FFEH]= 00H[SS:4FFFH]= 00HPUSH BX ; BX= 0F20H[SS:4FFCH]=20H [SS:4FFDH]= 0FHPOP AX ; AX= 0F20HPOPF ; F= 00000000NEG BX ; BX= F0E0HXCHG BX, AX ; BX= 0F20HSTD ; F= 01010001STI ; F= 01110001CLD ; F= 00110001CLI ; F= 00010001ADC DI, 2050 ; DI= 4081H F= 00000010 //执行过程中考虑上一条指令的进位标志2030【BI】+2050+1(上一条指令的进位标志)ADC SP, DI ; SP= 9081H F= 10010010 ADC AX, 1500 ; AX= 05E0H F= 00000001 SUB AX, BX ; AX= F6C0H BX= 0F20H SHL AH, 1 ; AH= ECHRCL AX, 1 ; AX= D981HSHR BH, 1 ; BH= 07HRCR BL, 1 ; BL= 90HMOV CL, 4MOV DX, 80F0ROL DX, CL ; DX= 0F08H CL= 04HINT 20 ; CS= 00A7H IP= 1072H实验二数据的建立与传送程序一、实验目的1. 继续学习DEBUG命令。
汇编语言实验报告
实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三.实验过程和程序1、启动DOS操作系统2、运行程序(若当前盘为C)C:>DEBUG↙3、用“A”命令编辑和汇编源程序–A ↙186E:0100 MOV AX,[0200]↙186E:0103 MOV BX,[0202]↙186E:0107 ADD AX,[0204]↙186E:010B ADC BX,[0206]↙186E:010F MOV [0208],AX↙186E:0112 MOV [020A],BX↙186E:0116 ↙4、用“U”命令反汇编验证源程序–U CS:0100↙186E:0100 A10002 MOV AX,[0200]186E:0103 8B1E0202 MOV BX,[0202]186E:0107 03060402 ADD AX,[0204]186E:010B 131E0602 ADC BX,[0206]186E:010F A30802 MOV [0208],AX186E:0112 891E0A02 MOV [020A],BX186E:0116–5、程序未执行前,用“R”命令观察,相关寄存器的内容。
–R↙如:(AX)= 0000 ,(BX)= 0000 ,(SI)= 0000 ,(DI)= 0000 ,(CS)= 13F5 ,(IP)= 0100 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机学院软件工程专业 0901 班组、学号 3209006304 姓名李春茹协作者教师评定_
实验题目___ _用表格形式显示ASCII字符SMASCII __________
一、实验目的与要求
学习用汇编语言设计与编写循环程序。
题目:用表格形式显示ASCII字符SMASCII
二、实验内容
按15行X16列的表格形式显示ASCII码为10H一100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。
每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。
三、程序流程图
四、源程序代码
data segment ;数据段
data ends
code segment ;代码段
main proc far
assume cs: code,ds:data
start: ;程序入口
push ds ;把原数据段压栈保存
sub ax,ax ;把ax清零
push ax ;把ax压栈
mov dx,010h ;从010h开始输出
mov cx,15 ;输出15行,循环15次
push dx
loop1: mov bx,cx ;外层循环,循环15次
mov cx,15 ;每行输出16个,循环16次
loop2: ;内层循环,循环16次
pop dx
mov ah,02h
int 21h ;输出dx
inc dx
push dx
mov dx,00h
int 21h ;输出空格
loop loop2
mov ah,02h ;回车换行
mov dl,0dh
int 21h
mov dx,0ah
int 21h
mov cx,bx
loop loop1
pop dx ;将最后一个字符出栈,恢复堆栈段的初始情况 ret
main endp ;主程序结束
code ends ;代码段结束
end start ;从start开始程序
五、程序运行截图。