川师汇编实验报告

合集下载

汇编语言实验报告1~7

汇编语言实验报告1~7

汇编语言实验报告1~7实验一:数据传输指令、算术指令、逻辑指令的使用实验内容:利用汇编语言,编写一个程序,实现两个整数相加,并将结果存入第三个变量中实验步骤:1. 声明三个变量a、b、c2. 将10存入a,将20存入b3. 将a的值传入al,将b的值传入bl4. 使用add指令将al和bl相加,将结果存入al5. 将al的值传入c6. 显示c的值实验结果:a db 10mov al,aadd al,blint 21hmov ax,4c00h实验二:分支指令的使用实验内容:利用汇编语言,编写一个程序,实现当输入的值为正数时,输出"I'm positive!";当输入的值为负数时,输出"I'm negative!";当输入的值为零时,输出"I'm zero!"1. 定义一个变量num2. 接收用户输入,并将其存储在num中3. 用test指令判断num的值4. 当num=0时,执行输出"I'm zero!"的指令7. 退出程序num db ?lea dx, promptsub al, '0'test num, numjz zerojs negjmp positiveneg:output:zero_msg db 'I am zero!$'prompt db 'Please enter a number:', 0dh, 0ah, '$'1. 定义变量i、sum,分别表示累加的数字和累加和2. 将i赋初值1,sum赋初值03. 进入循环5. 使用inc指令将i加16. 使用cmp指令将i与10比较,如果i小于等于10,继续循环,否则退出循环7. 输出结果mov bx, iloopStart:inc bx实验四:过程调用的使用2. 循环遍历1到100之间的每个数3. 用一个for语句嵌套一个for语句判断该数是否为质数4. 用两个自定义的子程序is_prime和output输出结果call is_primeskip:cmp i, 100prime_loop:div blretje newlinejmp done实验目的:掌握字符串操作指令的使用实验内容:利用汇编语言,编写一个程序,将字符串"SJTU"改为字符串"MIT"1. 定义字符串SJTU和MIT2. 定义两个变量i和len,分别表示字符串的下标和长度3. 使用movsb将SJTU的值传到MIT中4. 输出MITSJTU db 'SJTU'lea si, SJTUstringLoop:实验内容:利用汇编语言,编写一个程序,实现将输入的字符串写入一个文件中,然后再读取该文件中的字符串并输出2. 打开文件3. 将字符串写入文件中4. 关闭文件6. 读取文件内容8. 输出读取的字符串fileName db 'test.txt'content db 32 dup(?)mov cx, word ptr [content]实验内容:利用汇编语言,编写一个程序,在系统按下Ctrl+C时,输出一条信息并退出1. 声明函数handleCtrlC2. 获取中断21的地址,将其存储到文件头中org 100hmov [old_int_21h], es:bxmov dx, offset handleCtrlCend开始:。

【实验】汇编实验报告

【实验】汇编实验报告

【关键字】实验实验一汇编程序的汇编及运行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。

汇编实验报告

汇编实验报告

《汇编实验报告》摘要:DX,NUM1,AX,NUM1,AH,2实验三算术运算与代码转换程序设计一、实验目的1)掌握算术运算程序的设计方法。

2)掌握代码转换程序的设计方法。

3)进一步掌握各种程序结构。

4)熟练掌握和使用用 DEBUG 调试程序。

二、实验内容1 1 )编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。

2)编制程序实现二进制定点数与十进制数的 ASCII 码串之间转换,并将结果显示在屏幕上。

3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。

4)写程序把从键盘输入的四位十六进制数转换为压缩的 BCD 码,并显示输出。

5)编写一通用过程用来将十进制数(从键盘输入)转换为 P(从键盘输入)进制数。

三、实验设备PC 机一台四、实验步骤1) 按程序流程图编制实验程序。

2) 输入源程序。

3) 汇编、连接程序,执行程序,检查结果。

4) 程序的执行可用 DEBUG 的 G 命令,也可用 T 命令单步跟踪执行。

5) 用 D 命令检查执行结果。

六、源程序实验一 DATA SEGMENT NUM1 DB 22H,33H,44H,55H,66H,77H NUM1L DB 6HNUM2 DB 22H,22H,22H,22HNUM2L DB 4HOUTCOME1 DB 10H DUP(0) OUTCOME2 DB 10H DUP(0)N DB 0HDATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATAMOV DS,AXMOV CH,0MOV SI,OFFSET NUM1MOV DI,OFFSET NUM2MOV AH,NUM1LMOV AL,NUM2LCMP AH,ALJAE CHAXCHG SI,DIXCHG AH,ALCHA:SUB AH,ALMOV CL,ALCLCMOV BX,OFFSET OUTCOME1 LOP1:MOV AL,[DI] PUSH CXMOV CL,[SI]ADC CL,ALMOV [BX],CLINC BXINC SIINC DIPOP CXLOOP LOP1MOV CL,AHJCXZ LOP3LOP2:PUSH CXMOV CL, BYTE PTR [SI] ADC CL,0MOV [BX],CLPOP CXINC BXINC SILOOP LOP2LOP3:MOV CH,0MOV SI,OFFSET NUM1 MOV DI,OFFSET NUM2 MOV AH,NUM1LMOV AL,NUM2LCMP AH,ALJAE CHA1XCHG SI,DIXCHG AH,ALCHA1:SUB AH,ALMOV CL,ALCLCMOV BX,OFFSET OUTCOME2 LOP11:MOV AL,[DI]PUSH CXMOV CL,[SI]SBB CL,ALMOV [BX],CLINC BXINC SIINC DIPOP CXLOOP LOP11MOV CL,AH JCXZ LOP7LOP21:PUSH CXMOV CL, BYTE PTR [SI]SBB CL,0MOV [BX],CLPOP CXINC BXINC SILOOP LOP21LOP7:MOV DI,OFFSET OUTCOME1 ADD DI,10HMOV CX,11HLOP4: MOV DL,[DI] DEC DICMP N,0HJNE LOP5CMP DL,0HJE LOP9LOP5:PUSH DX PUSH CXMOV CL,4HSHR DL,CLPOP CXCMP DL,9HJBE LOP6ADD DL,7HLOP6:ADD DL,30H MOV AH,2INT 21HMOV N,1HPOP DXAND DX,0FH CMP DL,9HADD DL,7HLOP8:ADD DL,30HMOV AH,2INT 21HMOV DL,"H"MOV AH,2INT 21HLOP9:LOOP LOP4MOV N,0MOV DI,OFFSET OUTCOME2 ADD DI,10H MOV CX,11HLOP14: MOV DL,[DI]DEC DICMP N,0HJNE LOP15CMP DL,0HJE LOP19LOP15:PUSH DXPUSH CXMOV CL,4HPOP CXCMP DL,9HJBE LOP16ADD DL,7HLOP16:ADD DL,30H MOV AH,2INT 21HMOV N,1HPOP DXAND DX,0FHCMP DL,9HJBE LOP18ADD DL,7HLOP18:ADD DL,30H MOV AH,2INT 21HMOV DL,"H"MOV AH,2INT 21HLOP19:LOOP LOP14MOV AH,4CHINT 21HCODE ENDSEND START验实验 2DATA SEGMENTTISHI1 DB "Please enter the first number:","$" TISHI2 DB "Please enter the second number:","$" JIA DB "+","$"JIAN DB "-","$"CHENG DB "*","$" CHU DB "/","$"DENG DB "=","$"YU DB "......","$"A DB 10B DW 10C DW 10000F DW 0HNUM1 DW 0HNUM2 DW 0HN DB 0HN1 DB 4HDATA ENDSSTACK1 SEGMENT STACK DW 30H DUP(0)STACK1 ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATA START:MOV AX,DATA MOV DS,AXMOV DX,OFFSET TISHI1 MOV AH,09HINT 21HLOOP2:MOV AX,NUM1 MUL BMOV BX,AXMOV AH,1INT 21HCMP AL,0DHJE LOP1MOV NUM1,BXMOV AH,0SUB AL,30HADD NUM1,AXJMP LOOP2LOP1:MOV DL,0AH输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21H MOV DX,OFFSET TISHI2 MOV AH,09HINT 21HLOOP1:MOV AX,NUM2 MUL B MOV BX,AXMOV AH,1INT 21HCMP AL,0DHJE LOP3MOV NUM2,BXMOV AH,0SUB AL,30HADD NUM2,AXJMP LOOP1LOP3:MOV DL,0AH 输出换行和回车MOV AH,2INT 21HMOV DL,0DH MOV AH,2INT 21HMOV N,0MOV DX,NUM1 MOV F,DXLOP6:MOV DX,0H MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP7MOV F,AXJMP LOP6LOP7:MOV CL,NLOP16:POP DX ADD DX,30HMOV AH,2INT 21HLOOP LOP16MOV DX,NUM2 MOV F,DXMOV N,0MOV DX,OFFSET JIA MOV AH,09HINT 21HLOOOP6:MOV DX,0H MOV AX,F DIV B PUSH DXINC NCMP AX,0HJE LOOOP7MOV F,AXJMP LOOOP6 LOOOP7:MOV CL,NLOOOP16:POP DX ADD DX,30HMOV AH,2INT 21HLOOP LOOOP16 MOV DX,OFFSET DENG MOV AH,09HINT 21HMOV N,0LOOP3:MOV AX,NUM1 ADD AX,NUM2MOV F,AXLOOP4:MOV DX,0H MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP5MOV F,AXLOOP5:MOV CL,NMOV CH,0LOOP0:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP0MOV DL,0AH输出换行和回车MOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV N,0 MOV DX,NUM1 MOV F,DXLOP61:MOV DX,0H MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP71MOV F,AXJMP LOP61LOP71:MOV CL,N MOV CH,0LOP161:POP DX ADD DX,30HMOV AH,2INT 21HLOOP LOP161MOV DX,NUM2 MOV F,DXMOV N,0MOV DX,OFFSET JIAN MOV AH,09HINT 21HLOOOP61:MOV DX,0H MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP71MOV F,AXJMP LOOOP61 LOOOP71:MOV CL,N MOV CH,0LOOOP161:POP DX ADD DX,30HMOV AH,2INT 21HLOOP LOOOP161 MOV DX,OFFSET DENG MOV AH,09HINT 21HMOV N,0 MOV N,0 MOV AX,NUM1SUB AX,NUM2MOV F,AXAND AX,10000000BCMP AX,10000000B JNE LOOP6NEG FLOOP6:MOV DX,0 MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP7MOV F,AXJMP LOOP6 LOOP7:MOV CL,N MOV CH,0LOOP16:POP DX ADD DX,30H MOV AH,2INT 21HLOOP LOOP16 MOV DL,0AH输出换行和回车INT 21HMOV DL,0DHMOV AH,2INT 21HMOV N,0MOV DX,NUM1MOV F,DXLOP62:MOV DX,0HMOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP72MOV F,AXJMP LOP62LOP72:MOV CL,NMOV CH,0 LOP162:POP DX ADD DX,30HMOV AH,2LOOP LOP162MOV DX,NUM2MOV F,DXMOV N,0MOV DX,OFFSET CHENG MOV AH,09HINT 21HLOOOP62:MOV DX,0H MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP72MOV F,AXJMP LOOOP62 LOOOP72:MOV CL,N MOV CH,0LOOOP162:POP DX ADD DX,30HINT 21HLOOP LOOOP162 MOV DX,OFFSET DENG MOV AH,09HINT 21HMOV N,0MOV AX,NUM1MUL NUM2DIV CPUSH DXMOV F,AXMOV N,0LOOP8:MOV DX,0 MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP9MOV F,AXLOOP9:MOV CL,N MOV CH,0LOOP17:POP DX ADD DX,30HMOV AH,2INT 21HLOOP LOOP17 MOV N,0POP FLOOP10:MOV DX,0H MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP11MOV F,AXJMP LOOP10 LOOP11:MOV AL,N CMP AL,4HMOV AL,4HSUB AL,NMOV CL,ALMOV CH,0LOOP19:MOV DX,"0" MOV AH,2INT 21HLOOP LOOP19 LOOP20:MOV CL,N MOV CH,0LOOP18:POP DX ADD DX,30HMOV AH,2INT 21HLOOP LOOP18 MOV DL,0AH输出换行和回车MOV AH,2INT 21HMOV DL,0DHINT 21H MOV N,0 MOV DX,NUM1 MOV F,DXLOP64:MOV DX,0H MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOP74MOV F,AXJMP LOP64LOP74:MOV CL,N MOV CH,0LOP164:POP DX ADD DX,30H MOV AH,2INT 21HLOOP LOP164 MOV DX,NUM2MOV N,0MOV DX,OFFSET chu MOV AH,09HINT 21HLOOOP64:MOV DX,0H MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOOP74MOV F,AXJMP LOOOP64 LOOOP74:MOV CL,N MOV CH,0LOOOP164:POP DX ADD DX,30HMOV AH,2INT 21HLOOP LOOOP164MOV DX,OFFSET DENG MOV AH,09HINT 21HMOV N,0 MOV AX,NUM1 MOV DX,0DIV NUM2PUSH DXMOV F,AXMOV N,0LOOP15:MOV DX,0 MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP12MOV F,AXJMP LOOP15LOOP12:MOV CL,N MOV CH,0LOOP21:POP DXADD DX,30HMOV AH,2INT 21HLOOP LOOP21 MOV DX,OFFSET YU MOV AH,09HINT 21HPOP FMOV N,0LOOP13:MOV DX,0 MOV AX,FDIV BPUSH DXINC NCMP AX,0HJE LOOP14MOV F,AXJMP LOOP13 LOOP14:MOV CL,N MOV CH,0H LOOP22:POP DXADD DX,30H MOV AH,2INT 21HLOOP LOOP22MOV AH,4CHINT 21HCODES ENDSEND START实验五输入输出程序设计一、实验目的1) 掌握输入输出程序的编写方法。

师大汇编实验报告含程序参考模板

师大汇编实验报告含程序参考模板

湖南师范大学汇编实验报告姓名:年级:专业:计算机科学与技术学号:任课教师:陈兆仁开课时间:2012~2013学年第一学期实验一DOS常用命令及8086指令使用实验目的:通过实验掌握下列知识:1、DOS命令: DIR,DEL,RENAME,FORMAT,COPY。

2、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG3、DEBUG命令: A,D,E,F,H,R,T,U。

4、BCD码,ASCII码及用16进制数表示二进制码的方法。

5、8086寄存器: AX,BX,CX,DX,F,IP。

内容及步骤:一、DOS常用命令练习:1、将新盘插到 A驱动器中,用DIR命令查看盘上文件。

2、用命令 COPY BUG 复制一个文件。

3、用命令 RENAME BUG BG 将BUG 文件改为BG。

4、用命令 DEL BG 将文件BG删除。

在操作时要注意提示信息,并按提示操作。

二、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,CF8、用R命令将AX,BX内容改写为1050H及23A8H。

汇编实验实验一

汇编实验实验一

《汇编》实验报告一、实验内容1、试编制一程序,计算下列公式的值,并存放在FUN存储单元中。

F=[10*(x+y)-3*(z-1)]/22、试编制一程序,从键盘输入一字符串,并将该字符串从屏幕上显示出来。

例如:显示’hello computer!’二、实验目的及要求1、实验目的:1.了解熟悉DEBUG命令;2.熟悉数据传送指令、算术运算指令、逻辑指令、段寄存器装在的内容;3.掌握简单的汇编语言程序编写与调试。

2、实验要求:1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;2.阅读数据传送指令、算术运算指令、逻辑指令、段寄存器装在的内容;3.用DEBUG的有关命令调试本实验中的求多项式结果程序段与从键盘输入一字符串并将该字符串从屏幕上显示出来的程序段。

三、设计分析第一题的设计分析:一、实现变量的三个步骤:①、在数据段中定义变量并赋予初值,为计算多项式做准备;②、利用算术指令ADD、SAL、SUB、INC、DEC、SAR实现多项式的运算。

二、计算变量与计算变量结果的存放:①、代码段第三条指令开始计算变量,倒数第三条指令存放变量的结果,即多项式的计算终止;②、变量的奇数倍用ADD与SAL指令完成,而偶数倍只需SAL指令完成;③、注意MOV指令的操作数不能同时为存储单元。

第二题的设计分析:一、实现字符串输入,需要分成三个步骤:①、在数据段中定义一个缓存区为存放字符串做准备;②、DOS系统功能调用0AH号子功能,(DS:DX)= 输入缓冲区首址;③、在输入的字符串尾加上‘$’字符,以作为输出结束条件。

二、实现字符串输出,则需要注意的问题是:①、缓冲区第三个字节才开始存放输入的字符,前两个字节分别存放缓冲区长度和字符串实际字符数;②、输出回车换行可利用字符串:CR DB 0AH,0DH,’$’。

四、程序的调试过程第一题:第二题:五、运行结果分析第一题的运行结果分析:第二题的运行结果分析:六、附件:带注释的源程序第一题的源代码:TITLE EXAMPLE PROGRAMDATA SEGMENTVARX DW 123H ;定义X变量VARY DW 456H ;定义Y变量VARZ DW 789H ;定义Z变量FUN DW ? ;定义存放结果的存储单元DATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AX,VARX ;取变量XADD AX,VARY ;计算(X+Y)MOV BX,AXSAL AX,1 ;计算2*(X+Y)SAL AX,1 ;计算4*(X+Y)ADD AX,BX ;计算5*(X+Y)SAL AX,1 ;计算10*(X+Y)MOV BX,VARZ ;取变量ZDEC BX ;计算(Z-1)MOV CX,BXSAL BX,1 ;计算2*(Z-1)ADD BX,CX ;计算3*(Z-1)SUB AX,BX ;计算10*(X+Y)-3*(Z-1) SAR AX,1 ;计算[10*(X+Y)-3*(Z-1)]/2 MOV FUN,AX ;存放结果MOV AH,4CH ;终止用户程序,返回DOS INT 21HCODE ENDSEND START第二题的源代码:DATA SEGMENTN EQU 50MAXLEN DB N ;缓冲区字符的最大长度ACTLEN DB ? ;实际字符个数STRING DB N DUP(?) ;字符空间CR DB 0AH,0DH,'$'DATA ENDSSTACK1 SEGMENT PARA STACKDW 200H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXLEA DX,MAXLENMOV AH,0AHINT 21H ;字符串输入MOV AH,09H ;字符串输出LEA DX,CR ;回车换行INT 21HMOV BL,MAXLEN+1 ;取实际的字符长度MOV BH,0LEA SI,MAXLEN+2 ;取字符开始的首地址MOV BYTE PTR [SI+BX],'$' ;输出结尾要加上$ MOV DX,SI ;把开始存放字符的首地址赋给DX MOV AH,09H ;字符串输出INT 21HMOV AH,4CH ;终止用户程序,返回DOSINT 21HCODE ENDSEND START。

汇编语言实验十实验报告

汇编语言实验十实验报告

汇编语言实验十实验报告一、实验目的本次实验的主要目的是通过学习汇编语言中的输入输出指令和字符串操作指令,掌握如何在汇编语言中进行简单的输入输出和字符串操作。

二、实验内容本次实验主要包括以下内容:1. 输入输出指令:学习如何使用INT 21h中断来进行简单的键盘输入和屏幕输出操作。

2. 字符串操作指令:学习如何使用MOV、LEA、LDS等指令来进行字符串的存储、传递和比较等操作。

3. 实现一个简单程序:通过上述知识点,完成一个简单的程序,可以进行键盘输入和屏幕输出,并对两个字符串进行比较。

三、实验过程1. 输入输出指令在汇编语言中,我们可以使用INT 21h中断来进行键盘输入和屏幕输出操作。

其中,AH寄存器用于指定不同的功能号码。

例如:- AH=01h:在屏幕上显示一个字符- AH=02h:在屏幕上显示一个ASCII码值所代表的字符- AH=06h:从键盘读取一个字符下面是一个示例程序,可以让用户从键盘上输入一个字符,并将其显示在屏幕上:```mov ah, 06h ; 将06h存入AH寄存器int 21h ; 调用中断21hmov dl, al ; 将读取的字符存入dl寄存器mov ah, 02h ; 将02h存入AH寄存器int 21h ; 调用中断21h,显示字符```2. 字符串操作指令在汇编语言中,我们可以使用MOV、LEA、LDS等指令来进行字符串的存储、传递和比较等操作。

例如:- MOV:可以将一个字符串从一个内存地址复制到另一个内存地址- LEA:可以将一个字符串的地址加载到寄存器中- LDS:可以将一个段地址和偏移地址加载到DS和SI寄存器中下面是一个示例程序,可以将一个字符串从一个内存地址复制到另一个内存地址,并比较两个字符串是否相等:```mov si, offset str1 ; 将str1的偏移地址加载到SI寄存器中lea di, str2 ; 将str2的地址加载到DI寄存器中mov cx, length ; 将字符串长度加载到CX寄存器中copy_loop:lodsb ; 从SI指向的内存单元读取一字节数据,并自动将SI加1 stosb ; 将AL所包含的数据写入DI指向的内存单元,并自动将DI 加1loop copy_loop ; 循环执行,直至CX为0cmp str1, str2 ; 比较str1和str2是否相等je equal ; 如果相等,跳转到equal标签not_equal:; 如果不相等,执行一些操作jmp endequal:; 如果相等,执行一些操作end:```三、实验结果通过本次实验,我学会了如何在汇编语言中进行简单的输入输出和字符串操作。

汇编实验一实验报告

汇编实验一实验报告

汇编语言程序设计实验报告课程名称汇编语言程序设计班级姓名学号指导教师汇编语言程序设计实验一DEBUG 程序使用技巧1.寄存器和内存开始Debug 程序。

输入“Q ” 退出程序。

再次启动Debug。

输入“r ”来显示CPU的当前状态和寄存器中的当前内容。

输入“r AX ”和“1234”,AX 寄存器中的内容变为1234。

输入“r DS ”和“2000”,DS 寄存器中的内容变为2000。

输入“d DS:1000 ”来显示数据段中80H 字节数据,把数据抄在这里:输入“f DS:1000 1100 77 ”再显示一次这80H 字节。

判断这条指令的作用是什么?答:从DS:1000地址七,将1100H字节的内容赋值为77H再输入“d 2000:1000 ”来显示数据段中80H 字节数据。

观察与前面的数据有无不同。

输入“d 1900:0100 ”和“d 1ff0:0100 ”来显示两个存储段中的内容。

比较其中2000:0000 段中的数据。

相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。

答:相同段落中的数据相同, 程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。

2.输入机器码,使用单步和断点退出Debug,再重新启动Debug。

输入“r ”观察CPU 的状态,下一条指令是什么?答:下一条指令是ADD [BX+SI],AL使用两种方式输入一段程序,第一种方式:直接输入机器码。

输入“u ”来显示程序段中的指令序列。

然后输入“d CS:100 ” 来显示代码段中的数据。

观察显示内容。

“u CS:100 106 ”做反汇编,就是显示出汇编语句。

将这几句汇编语句记录下来:使用输入“r ”观察CPU 的状态,使用“t ”来跟踪程序,直至最后一条指令执行完毕。

注意,跟踪程序前,要让IP 寄存器中的值是100H。

一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。

汇编实验报告

汇编实验报告

汇编实验报告一、实验目的本次汇编实验的主要目的是深入理解计算机底层的工作原理,掌握汇编语言的基本语法和编程技巧,能够运用汇编语言编写简单的程序来实现特定的功能。

通过实践操作,提高对计算机体系结构的认识,培养解决实际问题的能力。

二、实验环境本次实验使用的操作系统为 Windows 10,汇编语言编译器为MASM 615。

三、实验内容(一)数据传送与算术运算1、编写程序实现将两个 16 位的整数相加,并将结果存储在指定的内存单元中。

2、实现数据在不同寄存器和内存单元之间的传送。

(二)逻辑运算与移位操作1、对给定的两个字节数据进行逻辑与、或、异或操作,并观察结果。

2、进行移位操作,包括左移和右移,理解移位对数据的影响。

(三)循环与分支结构1、利用循环结构计算 1 到 100 的整数之和。

2、根据给定的条件,使用分支结构实现不同的操作。

(四)子程序调用1、编写一个子程序,实现两个数的乘法运算。

2、在主程序中调用该子程序,并输出结果。

四、实验步骤(一)数据传送与算术运算1、打开 MASM 编译器,新建一个汇编源文件。

2、使用`MOV` 指令进行数据传送,将两个整数分别存储在寄存器`AX` 和`BX` 中。

3、使用`ADD` 指令将两个数相加,结果存储在`CX` 寄存器中。

4、最后,使用`MOV` 指令将结果存储到指定的内存单元。

(二)逻辑运算与移位操作1、在源文件中定义两个字节变量,并初始化其值。

2、使用逻辑运算指令(如`AND`、`OR`、`XOR`)对这两个变量进行操作。

3、使用移位指令(如`SHL`、`SHR`)对变量进行移位,并观察结果。

(三)循环与分支结构1、对于循环结构,使用`LOOP` 指令实现从 1 到 100 的累加。

2、在分支结构中,根据给定的条件(如比较两个数的大小),使用`JZ`、`JL` 等指令执行不同的分支操作。

(四)子程序调用1、定义一个子程序,使用参数传递的方式接收两个数,并进行乘法运算。

汇编实验报告

汇编实验报告

汇编实验报告概述:本次实验主要通过汇编语言的学习和实践,加深对汇编语言的理解并掌握其基本操作和使用方法。

我们使用了x86汇编语言,以及相关的工具和环境。

一、实验背景汇编语言是计算机底层的一种编程语言,通过对计算机底层指令的直接操作,可以实现对硬件的控制。

汇编语言是学习高级编程语言的基础,也是了解计算机运行机理的关键。

二、实验目的1. 理解汇编语言的基本原理和特点;2. 掌握汇编语言的基本指令和语法;3. 学会使用汇编语言进行简单的程序设计和调试。

三、实验环境和工具1. 操作系统:Windows 10;2. 开发工具:MASM(Microsoft Macro Assembler);3. 测试工具:DOSBox。

四、实验过程1. 安装和配置实验环境首先,我们需要安装和配置MASM和DOSBox。

MASM是一款由微软开发的汇编语言开发工具,通过它可以将汇编语言代码转化为可执行文件。

DOSBox是一个模拟DOS环境的工具,能够在现代操作系统上运行旧版的DOS程序。

2. 学习和练习基本指令接下来,我们通过学习和练习基本指令,来掌握汇编语言的基本用法。

我们开始学习如何在汇编语言中定义和初始化变量,以及如何进行算术运算和逻辑运算。

同时,我们还学习了如何使用循环和条件语句。

3. 编写和运行简单程序在掌握了基本指令之后,我们开始编写一些简单的程序,并通过MASM将其转化为可执行文件。

我们编写了一个通过计算两个数的和来演示算术运算的程序,并使用DOSBox来运行这个程序,观察其运行结果。

4. 调试和优化程序在运行程序的过程中,我们发现了一些问题和bug。

我们使用调试工具对程序进行调试,通过逐步执行代码并观察变量的值来发现问题所在。

我们找到了一个变量定义错误的bug,并进行了修复。

此外,我们还通过代码优化来提高程序的性能和效率。

五、实验结果和分析经过一系列的实验和练习,我们成功地掌握了汇编语言的基本操作和使用方法。

我们能够编写简单的汇编程序,并通过MASM将其转化为可执行文件。

汇编实验报告一实验总结

汇编实验报告一实验总结

汇编实验报告一实验总结
实验报告一:汇编实验总结
实验目的:通过汇编实验,掌握汇编语言的基本语法和编程技巧,加深对计算
机底层工作原理的理解。

实验过程:在实验中,我们首先学习了汇编语言的基本语法和指令格式,包括
寄存器的使用、内存地址的访问、算术运算和逻辑运算等。

随后,我们进行了
一系列的编程练习,包括编写简单的程序来实现加法、乘法、比较大小等功能。

在实验的最后阶段,我们还学习了如何调用系统中断来实现输入输出操作。

实验结果:通过本次实验,我们深入了解了汇编语言的编程技巧和应用场景。

我们不仅掌握了汇编语言的基本语法,还学会了如何编写简单的汇编程序来实
现一些基本的功能。

同时,通过实验,我们对计算机底层的工作原理有了更深
入的理解,对计算机系统的运行机制有了更清晰的认识。

实验总结:本次汇编实验让我们深入了解了汇编语言的基本知识和编程技巧,
为我们今后的学习和工作打下了坚实的基础。

通过实验,我们不仅学会了如何
使用汇编语言编写程序,还对计算机系统的底层工作原理有了更深入的理解。

希望在今后的学习和工作中,我们能够继续深入研究汇编语言,不断提高自己
的编程水平,为计算机科学技术的发展贡献自己的力量。

汇编实验报告3

汇编实验报告3

汇编实验报告3汇编实验报告3引言:汇编语言是一种低级语言,用于编写计算机程序。

在本次实验中,我们将继续学习和实践汇编语言的基本概念和技术。

本报告将详细记录我们在实验过程中所遇到的问题、解决方案和实验结果。

实验目的:本次实验的主要目的是加深对汇编语言的理解,并通过实践掌握汇编语言的基本操作和调试技巧。

通过完成实验,我们将能够编写简单的汇编程序,理解程序的执行过程和内存的使用。

实验环境:本次实验使用的是x86架构的计算机,并使用MASM汇编器进行程序的编译和链接。

我们还使用了调试器来跟踪程序的执行过程。

实验步骤:1. 阅读实验指导书和相关资料,了解本次实验的要求和目标。

2. 编写一个简单的汇编程序,实现两个数的相加功能。

程序首先要求用户输入两个数,然后将其相加并输出结果。

3. 使用MASM汇编器将程序源代码编译成目标文件。

4. 使用链接器将目标文件与运行时库链接,生成可执行文件。

5. 运行程序,并验证程序的正确性。

如果程序不能正常工作,使用调试器进行调试,找出问题的原因并进行修复。

6. 记录实验结果和遇到的问题,撰写实验报告。

实验结果:我们编写了一个简单的汇编程序,成功实现了两个数的相加功能。

程序能够正确地接收用户输入的两个数,并将其相加后输出结果。

我们通过多次测试,验证了程序的正确性。

实验中遇到的问题及解决方案:在实验过程中,我们遇到了一些问题,下面是其中的两个例子以及我们的解决方案:1. 问题:在程序运行过程中,无法正确接收用户输入的数值。

解决方案:我们仔细检查了程序的输入部分,发现在读取用户输入时,没有正确设置输入缓冲区的大小。

通过增大缓冲区的大小,我们成功解决了这个问题。

2. 问题:程序输出的结果不正确。

解决方案:我们使用调试器跟踪程序的执行过程,发现在进行相加操作时,寄存器的值被错误地覆盖了。

经过进一步的调试,我们发现这是因为在进行相加操作之前,没有正确地保存寄存器的值。

通过添加保存和恢复寄存器值的代码,我们成功解决了这个问题。

汇编实验一 实验报告

汇编实验一 实验报告

实验一查看CPU和内存用机器指令和汇编指令编程
一、实验目的
1.掌握debug的使用方法,会用基本的D,R命令查看、显示内存和寄存器
2.了解汇编指令编程的方法。

二、实验任务
1检查在存储器低端的BIOS数据区的内容。

(1)检查串行与并行端口
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2 考察ROM BIOS
目的:检查在存储器高端的ROM BIOS中的数据。

(1)检查版本通告
(2)检查ROM BIOS数据
3.用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改。

三、实验结果及分析
1、检查在存储器低端的BIOS数据区的内容
(1)检查串行与并行端口
说明:检查后发现有四个串行端口,分别是03F8、02F8、03E8、02E8;并行端口也有四个,分别是03BC、03BC、0378、0278、9FC0
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2、考察ROM BIOS (1)检查版本通告
(2)检查ROM BIOS数据
3、用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改
四、实验总结(心得、体会)
1、通过对检查在存储器低端的BIOS数据区的内容的查看,可以了解计算机的各种状态,而考察ROM BIOS可以鉴定计算机的出厂信息。

2、通过用D、R命令查看、显示内存和寄存器,可以了解计算机运行的过程步骤,并且可以通过偏移地址读取内容。

3、在读取时需要注意的是,在DEBUG显示中是低位至高位的显示,而我们需要的是高位至低位的显示方式,所以在操作时对于双字节的读取,需要将前后字节地址内容互换。

汇编 实验报告

汇编 实验报告

汇编实验报告汇编实验报告引言:汇编语言是一种低级语言,用于编写计算机程序。

在计算机科学领域中,汇编语言是一门重要的学科,它可以帮助我们更深入地了解计算机的内部工作原理。

本实验报告将介绍我在学习汇编语言过程中的实验经历和所学到的知识。

实验一:汇编语言的基本概念在本实验中,我首先学习了汇编语言的基本概念。

汇编语言是一种用于编写机器指令的低级语言,它直接操作计算机的硬件。

通过学习汇编语言,我了解了计算机内存、寄存器、指令和数据的存储方式,并学会了如何编写简单的汇编程序。

实验二:汇编语言的数据表示在这个实验中,我学习了汇编语言中的数据表示方法。

汇编语言中的数据可以用不同的方式表示,例如二进制、十进制和十六进制。

我还学习了如何使用数据寄存器和内存寻址来处理不同类型的数据。

实验三:汇编语言的指令集在本实验中,我学习了汇编语言的指令集。

汇编语言中的指令可以分为数据传送指令、算术运算指令、逻辑运算指令和控制指令等多种类型。

通过学习不同类型的指令,我可以编写更加复杂和功能强大的汇编程序。

实验四:汇编语言的程序设计在这个实验中,我学习了如何使用汇编语言进行程序设计。

通过学习汇编语言的程序设计技巧,我可以编写出高效、精确和可靠的程序。

我还学习了如何使用子程序、循环和条件语句等控制结构来实现不同的功能。

实验五:汇编语言的调试和优化在本实验中,我学习了如何调试和优化汇编语言程序。

调试是指在程序运行过程中发现并修复错误的过程,而优化则是指对程序进行性能提升的过程。

通过学习调试和优化技巧,我可以提高程序的效率和可靠性。

结论:通过这些实验,我对汇编语言有了更深入的了解。

汇编语言虽然复杂,但它可以帮助我们更好地理解计算机的内部工作原理,并且可以编写出高效、精确和可靠的程序。

通过学习汇编语言,我不仅提升了自己的编程能力,还对计算机科学有了更全面的认识。

我相信,在今后的学习和工作中,汇编语言将会发挥重要的作用。

汇编实验报告3

汇编实验报告3

实验(三)实验5:汇编语言顺序结构程序设计一、实验目的:1.掌握汇编语言顺序结构程序设计方法。

2.熟悉常用汇编指令的用法。

3.学会debug输入、运行小程序,并检查运行情况的方法。

4.学会在PC机上建立、汇编、连接、调试和运行80x86汇编语言程序的过程。

二、实验内容:○调试程序2:下面程序完成将HEX为起始地址的两位十六进制转换成八位二进制数存入BIN单元,请阅读程序,找出其中的错误之处,并上机调试运行该程序.○调试程序3:下面程序完成将HEX为起始地址的两位十六进制(ASCII码)转换成八位二进制书存入BIN单元,请阅读程序,找出其中的错误之处,并上机调试运行该程序。

○编写程序1:实现W=(3X+6Y)*4-8Z,设X=5,Y=3,Z=19.实验前编写好程序。

三、实验代码:调试程序2:DATA SEGMENTX DB 20HY DW ?DATA ENDSCODE SEGMENTASSUME CS: CODE,DS: DATASTART: MOV AX, DATAMOV DS, AXMOV AL, X ;X存在AL里XOR AH, AH ;AH清零SHL AX, 1 ;左移一位存AXMOV BX, AXMOV CL, 2 ;将2存在CLSHL AX, CL ;AX的值左移2位存AXADD AX, BX ;AX与BX相加存AXMOV Y, AX ;AX的值赋予YMOV AH, 4CHINT 21HCODE ENDSEND START该程序实现的功能是:实验将X=20H左移一位和左移2位的值相加赋予Y。

运行结果为:调试程序3:实验代码(修改后的代码):DATA SEGMENTORG 1000HBIN DB ? ; 存放转换后的二进制数 HEX DB '6B' ;待转换的十六进制数6BHORG 1030HDB 00H,01H,03H,04H,05H,06H,07H,08H,09H ;0~9对应的二进制数转换表ORG 1040HDB 0AH,0BH,0CH,0DH,0EH,0FH ;A~F对应的二进制数转换表DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,HEX ;十六进制高位 36H-AL MOV BX,OFFSET BIN ;BIN的偏移地址1000H-BHSUB AH,AH ;AH清0ADD BX,AX ;1036H-BX形成转换表地址MOV DL,[BX] ;DL=(1036H)=06H ;SHL DL,4 ;将DL左移至高4位,DL=60HMOV AL,HEX+1 ;十六进制低位 42H-AL MOV BX,OFFSET BIN ;BIN的偏移地址1000H-BXXOR AH,AH ;AH清0ADD BX,AX ;1042H-BX形成转换表地址MOV AL,BX ;AL=(1024H)=0BH OR AL,DL ;AL=0BH||60H=6BHMOV BIN,AL ;6BH-BIN单元MOV AH,4CHINT 21HCODE ENDSEND START运行结果:调试程序一:DATA SEGMENTDAT DB 0A5H, 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV AL, DAT ;取被操作数MOV BL, AL ;备份操作数MOV CL, 4 ;设置准备移动的位数SHL BL, CL ;取操作数的高4位MOV DAT+1, BL ;将高BCD数存入DAT+1AND AL, 0FH ;取操作数的低4 位MOV DAT+2, AL ;将低BCD数存入DAT+2MOV AH, 4CHINT 21HCODE ENDSEND START运行结果:编写程序1:实现W=(3X+6Y)*4-8Z的程序:DATA SEGMENTX DB 5Y DB 3Z DB 19W DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXXOR AX,AX ;AX清0MOV AL,3MOV BL,XMUL BL ;3与X相乘存入ALMOV BX,AX ;AX存入BXMOV AL,6MOV CL,YMUL CL ;6与Y相乘存入CLMOV CX,AXADD BX,CX ;BX与CX相加存入BXMOV AX,4MUL BX ;BX与4相乘存入AXMOV BX,AXMOV AL,8MOV CL,Z ;8与Z相加存入ALMUL CLSUB DX,0 DX与0相减存入DXMOV WORD PTR W,BXMOV WORD PTR W+1,DXMOV AH,4CHINT 21HCODE ENDSEND START运行结果:四、实验小结:1.注意输入输出的文件转换和使用方法。

川师汇编实验报告

川师汇编实验报告

实验编号: 1 四川师大《汇编语言》实验报告2016年 9月 17 日计算机科学学院 2015 级3班实验名称DEBUG程序的调用
姓名:邓小卫学号:2015110309 指导老师:__吴贞东__ 实验成绩:
一.实验目的及要求
DEBUG程序的调用
汇编及反汇编命令A、U 的使用练习
显示及修改内存单元命令D、E 的使用练习
显示或修改寄存器命令R 的使用练习
单步及连续执行命令T、G 的使用练习
退出命令Q 的使用练习
二.实验内容
DEBUG程序的调用
汇编及反汇编命令A、U 的使用练习
显示及修改内存单元命令D、E 的使用练习
显示或修改寄存器命令R 的使用练习
单步及连续执行命令T、G 的使用练习
退出命令Q 的使用练习
三.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)
四.实验结果的分析与评价(该部分如不够填写,请另加附页)
通过了此次的实验,对于陌生的debug命令有了一定的了解,能够使用部分debug指令完成实验要求。

对于指令T、G还较为陌生,需要进一步的理解和练习。

注:实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格。

汇编实验报告

汇编实验报告

实验一(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所示。

汇编实验报告

汇编实验报告

MOV DL,ALMOV AH,2INT 21HDEC CHJNZ ROTATERETMAIN ENDPPROGNAM ENDSEND实验结果分析与总结1、程序运行结果:DEBUG调试:2、实验总结:用循环体结构完成,每次循环显示一个十六进制数位,因而循环次数是已知的,计数值为4。

循环体中则应包括从二进制到所显示字符的ASCII之间的转换,以及每个字符的显示,后者可以使用DOS功能调用实现。

由于数字0~9的ASCII为30~39H,而字母的A~F的ASCII为41~46H,所以把4位二进制加上30H后还需要一次判断,如果为字符A~F,则还应加上7才能显示正确的十六进制数。

指导老师评阅意见2、程序运行结果:DEBUG调试:2、实验总结:从第一个数开始依次对相邻的两个数进行比较,如果次序对,则不错任何操作,如果次序不对,则两个数互换位置。

指导老师评阅意见指导老师:年月日实验报告RETBINIHEX ENDPPROGNAM ENDSEND MAIN实验结果分析与总结3、程序运行结果:有匹配字符:无匹配字符:2、实验总结:应该注意数据段的定义和使用。

此外应该注意单个字符时的“边缘”情况因为,这是指针的移动和关键字的长度是一致的,但是这并不意味着,两个字符串匹配。

输出结果采用十六进制输出在《IBM PC汇编语言程序设计》一书中例6.3decihex中的子过程binihex,这里也提醒我要注意积累一些知识,只有这样才能把汇编语言学好。

指导老师评阅意见指导老师:年月日实验报告MOV DL,0CMP BYTE PTR [SI+6],3AHJB A0SUB BYTE PTR [SI+6],10MOV DL,1A7:ADD BYTE PTR [SI+7],DLMOV DL,0CMP BYTE PTR [SI+7],3AHJB A0SUB BYTE PTR [SI+7],10MOV DL,1A8:ADD BYTE PTR [SI+8],DLMOV DL,0CMP BYTE PTR [SI+8],3AHJB A0SUB BYTE PTR [SI+8],10MOV DL,1A9:ADD BYTE PTR [SI+9],DLA0:RETADD65536 ENDPQUIT:MOV AH,4CHINT 21HCODES ENDSEND START实验结果分析与总结4、程序运行结果:2、实验总结:程序接收用户输入的1小于等于50的十进制正整数,存入输入缓冲区后再把它转化为十六进制数,存入内存单元N中。

汇编实验报告终

汇编实验报告终

实验一汇编语言源程序的输入一、实验目的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命令。

汇编实验报告一实验总结

汇编实验报告一实验总结

汇编实验报告一实验总结汇编实验报告一实验总结实验背景汇编语言是一种低级语言,用于编写计算机程序。

在汇编实验一中,我们学习了基本的汇编指令和程序结构,并通过实践掌握了如何编写简单的汇编程序。

本文将对实验过程和结果进行总结和分析。

实验过程在实验一中,我们首先了解了汇编语言的基本概念和特点。

然后,我们使用汇编语言编写了一个简单的程序,目的是将两个数相加并输出结果。

在编写程序的过程中,我们学习了如何使用汇编指令进行算术运算、内存操作和输出。

我们还学习了如何使用调试器来调试和测试我们的程序。

实验结果经过编写和调试,我们成功地完成了实验一的目标。

我们的程序可以正确地将两个数相加并输出结果。

这个结果验证了我们对汇编语言和指令的理解和掌握。

通过这个实验,我们不仅学会了如何编写简单的汇编程序,还加深了对计算机底层运行原理的理解。

实验收获通过实验一,我们深刻认识到汇编语言的重要性和应用价值。

汇编语言虽然比高级语言更加底层和繁琐,但它可以直接操作计算机的硬件,提高程序的执行效率。

同时,学习汇编语言也有助于我们更好地理解计算机的工作原理和内部结构。

此外,实验一还培养了我们的逻辑思维和问题解决能力。

在编写程序的过程中,我们需要仔细思考每一条指令的含义和作用,并保证程序的正确性和效率。

通过调试和测试,我们学会了如何发现和解决程序中的错误和问题。

总结通过实验一,我们不仅掌握了汇编语言的基本知识和技巧,还提高了我们的编程能力和计算机思维。

汇编语言作为一种底层语言,虽然在现代编程中使用较少,但它对于理解计算机底层原理和优化程序仍然具有重要意义。

在今后的学习和工作中,我们将继续深入学习汇编语言,并将其应用于更复杂和实际的问题中。

我们相信,通过不断学习和实践,我们的汇编编程能力将不断提高,为我们的学术和职业发展打下坚实的基础。

总之,实验一是我们学习汇编语言的第一步,通过这个实验,我们对汇编语言有了更深入的了解和认识。

我们相信,在今后的学习和实践中,我们将能够更好地应用汇编语言,并取得更大的成果。

汇编专题实验设计报告

汇编专题实验设计报告

汇编语言专题实验报告设计题目:硬盘分区信息显示(HDDV)班级:计算机962011 年12 月10 日一、对课程设计的认识汇编是一门极其重要的课程。

从硬件角度看,学不好汇编就等于不懂计算机。

一方面汇编语言本身非常重要,另一方面在汇编课程中对计算机硬件的原理学习非常重要。

程序怎样存储,怎样运行,内存如何分配,高级语言怎样执行,I/O设备怎样管理和控制等等。

汇编实验就是把课程内学到的计算机原理以及汇编语言知识应用实践当中,真切、实际地去感受计算机硬件的操作原理,工作方式以及控制手段,亲身体会汇编编程的思想方法,加深对计算机整体的认识,为以后积累宝贵的实践经验。

汇编语言是仅仅比机器语言高一层的语言,能够学好汇编语言才能够对计算机底层的具体实现有深刻的理解,才能真正明白到底计算机里面是个什么样的。

学不好汇编那就是计算机还没有入门。

具体来说专题实验有以下几个作用:●汇编语言理论知识的复习、巩固和提高●训练编程动手能力●培养自学能力●培养独立思考能力和创新能力●熟悉计算机的底层操作、硬件操作原理二、功能需求描述1.显示整个硬盘的分区参数、状态信息2.参考显示格式如下:Partition Boot System Start(c) End(c) Size(MB)C80 fat16 0001 0165 2000D00 fat32 0166 02ca 2048E00 none 02cc 03fe 2000F00 fat32 03ff 0455 2000G …………………………………………………………三、程序方案设计1.分区信息通过扩展中断INT 13调用从分区表(MBR)中读取。

2.如果有多个分区,则根据分区表链结构,依次读出每个分区表参数,必须把全部分区都显示出来。

3.每次读引导扇区时,都要检验扇区标志(55AAH)有效性。

1.中断调用:int 13h/ ah=42h的延伸读取2.主要变量定义:pation1 boot1 system1 start1 end1 size1 enter1 space1 fat16_ fat32_ntfs_ extend_ error1 right1 均为字符定义。

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

实验编号: 2 四川师大《汇编语言》实验报告2016 年 9月 21 日
计算机科学学院 2015 级3班实验名称寻址方式实验
姓名:邓小卫学号:2015110309 指导老师:__吴贞东__ 实验成绩:
一.实验目的及要求
熟悉8086各种寻址方式
熟悉DEBUG各命令的使用方法
二.实验内容
3.2根据要求写出相应的汇编语言指令
1.把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器
2.用寄存器BX和SI的基执变址寻址方式把寄存器中的一个字节与AL寄存器的内容相
加,并把结果送到AL寄存器中。

3.用寄存器BX和位移量0B2H寄存器相对寻址方式把寄存器中的一个字和(CX)相加,
并把结果送回寄存器、
4.用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送
回该存储单元中。

5.把数0B5H与(AL)相加,并把结果送回AL中。

3.3 写出把首地址为BLOCK的字数组的第6个送到DX寄存器的指令。

要求使用以下几种寻址方式:
1.寄存器间接寻址
2.寄存器相对寻址
3.基址变址寻址
3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H ,(20102)=56H,(20103)=78H,(21200)=2AH,(21203)=4CH,(21202)=B7H,(212030)=65H,试着说明下列各条指令执行完后AX寄存器的内容。

1.MOV AX,1200H
2.MOV AX,BX
3.MOV AX,[1200H]
4.MOV AX[BX]
5.MOV AX,1100[BX]
6.MOV AX,[BX][SI]
7.MOV AX,1100[BX][SI]
三.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)3.2根据要求写出相应的汇编语言指令
1.把BX寄存器和DX寄存器的内容相加,结果存入DX
MOV DX,5
MOV BX,5
ADD DX,BX
2.用寄存器BX和SI的基执变址寻址方式把寄存器中的一个字节与AL寄存器的内容相
加,并把结果送到AL寄存器中。

MOV AL,5
ADD AL,[BX][SI]
3.用寄存器BX和位移量0B2H寄存器相对寻址方式把寄存器中的一个字和(CX)相加,
并把结果送回寄存器、
MOV CX,5
ADD 0524[BX],CX
4.用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送
回该存储单元中。

MOV AX,[0524]
ADD AX,2A59
5.把数0B5H与(AL)相加,并把结果送回AL中。

ADD AL,[0B5]
3.3 写出把首地址为BLOCK的字数组的第6个送到DX寄存器的指令。

要求使用以下几种寻址方式:
1.寄存器间接寻址
2.寄存器相对寻址
3.基址变址寻址
寄存器间接寻址
MOV AX,OFFSET[BLOCK][0AH]
MOV DX,[AX]
寄存器相对寻址
MOV SI,OAH
MOV DX,[BLOCK][SI]
基址变址寻址
MOV BX,BLOCK
MOV SI,OAH
MOV DX,[BX][SI]
3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H ,(20102)=56H,(20103)=78H,(21200)=2AH,(21203)=4CH,(21202)=B7H,(212030)=65H,试着说明下列各条指令执行完后AX寄存器的内容。

1.MOV AX,1200H
1200H
2.MOV AX,BX
0100H
3.MOV AX,[1200H]
0000
4.MOV AX,[BX] 0000
5.MOV AX,1100[BX] 0000
6.MOV AX,[BX][SI] B812H’
7.MOV AX,1100[BX][SI]
0000
四.实验结果的分析与评价(该部分如不够填写,请另加附页)
练习的越多,体会的便越多。

之前在做实验一时,并不知道那些指令熟悉了拿来干嘛,而这次实验便恰好使用上个实验上用到的指令。

而且,对于指令自己有独特的看法,比如3.2题中,如果不对寄存器内赋初值,实验是看不变化的,因而采用了MOV进行寻址修改,但是除了这个,还可以使用R指令直接修改。

另外,在做这些实验之前,我参考了网上的答案,发现有和网上的答案不同,不知道是不是计算机的原因。

注:实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格。

相关文档
最新文档