计算机科学与技术133汇编实验袁清高_第1页
计算机科学与技术133汇编实验袁清高_第2页
计算机科学与技术133汇编实验袁清高_第3页
计算机科学与技术133汇编实验袁清高_第4页
计算机科学与技术133汇编实验袁清高_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、合肥工业大学计算机与实验报告学院课程:汇编语言程序设计专业班级:计算机科学与技术 13-3 班号:2013211707学姓名:袁实验一 Debug 程序的使用一. 实验目的1、熟悉 DEBUG 程序中令,学会在 DEBUG 下调试运行汇编语言源程序。2、掌握 8086/8088 的寻址方式及多字节数据的处理。二. 实验内容1、利用 DEBUG 程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为 DS:0200H 和 DS:0204H 两个单元中。2、分别用直接寻址寄存器间接寻址方式编写程序段,实现将 DS:0200H单元和 DS:0204H 单元

2、中的数据相加,并将运算结果存放在 DS:0208H 单元中。要求:本次实验的内容均在 DEBUG 下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。三. 实验过程和程序附加题 3 源代码: data segmentsrcs db 20 dup(?) dess db 20 dup(?)data ends code segmentassume cs:code,ds:data,es:data start:mov ax,datamov ds,ax mov es,axmov al,0cchmov cx,lengthof srcs mov di,offset s

3、rcs cldrep stosbmov cx,lengthof srcsmov si,offset srcs mov di,offset dess cldrep movsbcode ends end start四. 实验结果(A 命令和 U 命令必要的截图)R 命令、D 命令、G 命令和 D 命令T 命令附加题 1附加题 2附加题 3五. 实验体会初次接触汇编,感觉有些东西理解起来有些。实验二 汇编语言程序设计(顺序、循环)一. 实验目的1、掌握顺序和循环程序结构和设计;2、熟悉在 PC 机上建立、汇编、连接、调试和运行 8086/8088 汇编语言程序的过程。二. 实验内容1、X、Y、Z、V

4、 均为字变量,在 X、Y、Z、V 字单元中存放是 16 位带符号数。试编写汇编语言程序完成以下功能:计算表达式值(V(X*Y+Z-720)/X;将上述表达式运算结果整数放在 SUM1 单元,余数放在 SUM2 单元。2、求一个班 50 名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来)3、从键盘读入一个字符串,以 Enter 结束,字符串不超过 50 个字符,并打印该字符串(附加题:查找中间是否有asm子串。如果有,输出Yes;否则,输出No)。三. 实验过程和程序1、 见实验一附加题 12、 源代码如下:data segmentgrade db 50 dup(?) num db

5、50max db 0min db 0 data endsstack segment stack dw 1024 dup(?)stack endscode segment 'code'assume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ax,0 mov bx,0 mov si,0mov cx,50again:mov bl,gradesi add al,bladc ah,0 inc siloop againdiv nummov ah,4ch int 21hcode ends end start3、 源代码如下:d

6、ata segmentbuffer db 50,0,50 data endsdup(0)stack segment stack dw 1024 dup(?)stack endscode segment 'code'assume cs:code,ds:data,ss:stackstart:mov movax,datads,axmov movintah,0ahdx,offset buffer 21hmov mov movaddcl,buffer+1 ch,0bx,offset buffer+2bx,cxmov mov movmovbyte byte bytebyteptrbx,&#

7、39;O'ptrbx+1,'U'ptrbx+2,'T'ptrbx+3,'$'movmov intah,09hdx,offset buffer+2 21hmovintah,4ch21hcode endsendstart四. 实验结果(必要的截图)1、 见实验一附加题 12、 截图如下:3、 截图如下:五. 实验体会本次实验编写了稍微复杂点的汇编程序。掌握了汇编程序中顺序程序设计。实验三 汇编语言子程序设计(分支、子程序)一. 实验目的1、掌握分支和子程序结构和设计;2、熟悉在 PC 机上建立、汇编、连接、调试和运行 8086/8088 汇编

8、语言程序的过程。3、通过汇编语言了解高级语言的参数传递等知识。二. 实验内容1、1. BL 中的只有一位为 1。编写程序测试,并输出提示要求:地址表和转移表。“The X Bit is 1”,2. 编写一个子程序计算 z=f(x,y)=x*y+x-y(x,y,z 有符号数内存数)。要求通过堆栈(寄存器、内存)传送所有参数。3. 实践 CAsm 的转换过程。三. 实验过程和程序3.1地址表:data segmentaddressTable dw func1,func2,func3,func4,func5,func6,func7,func8 msg1 db 'The First Bit i

9、s 1$'msg2 db 'The Second Bit is 1$' msg3 db 'The Third Bit is 1$' msg4 db 'The Fourth Bit is 1$' msg5 db 'The Fifth Bit is 1$' msg6 db 'The Sixth Bit is 1$' msg7 db 'The Sventh Bit is 1$' msg8 db 'The Eighth Bit is 1$' num db 4hdata endssta

10、ck segment stack dw 1024 dup(?)stack endscode segment 'code'assume cs:code,ds:data,ss:stackstart:mov ax,data mov ds,axmov al,nummov bx,0again:shr al,1 jc output add bx,2loop againoutput:jmp addressTablebxfunc1:lea dx,msg1 jmp overfunc2:lea dx,msg2 jmp overfunc3:lea dx,msg3 jmp overfunc4:lea

11、dx,msg4 jmp overfunc5:lea dx,msg5 jmp overfunc6:lea dx,msg6 jmp overfunc7:lea dx,msg7 jmp overfunc8:lea dx,msg8 jmp overover:mov ah,09h int 21hmov ah,4ch int 21hcode ends end start 转移表:data segmentmsg1 db 'The First Bit is 1$' msg2 db 'The Second Bit is 1$' msg3 db 'The Third Bit

12、 is 1$' msg4 db 'The Fourth Bit is 1$' msg5 db 'The Fifth Bit is 1$' msg6 db 'The Sixth Bit is 1$' msg7 db 'The Sventh Bit is 1$' msg8 db 'The Eighth Bit is 1$' num db 4hdata endsstack segment stackdw 1024 dup(?)stack endscode segmentassume cs:code,ds:data

13、,ss:stackstart:mov ax,data mov ds,axmov al,num mov bx,0again:shr al,1 jc output add bx,3loop againoutput:lea si,JUMPTABLE add si,bxjmp siJUMPTABLE:jmp near ptr func1 jmp near ptr func2 jmp near ptr func3 jmp near ptr func4 jmp near ptr func5 jmp near ptr func6 jmp near ptr func7jmp near ptr func8fun

14、c1:lea dx,msg1 jmp overfunc2:lea dx,msg2 jmp overfunc3:lea dx,msg3 jmp overfunc4:lea dx,msg4 jmp overfunc5:lea dx,msg5 jmp overfunc6:lea dx,msg6 jmp overfunc7:lea dx,msg7 jmp overfunc8:lea dx,msg8 jmp overover:mov ah,09h int 21hmov ah,4ch int 21hcode endsend start3.2data segmentx dw 100y dw 20z dw 0

15、 data endsstack segment stack dw 1024 dup(?)stack endscode segment 'code'assume cs:code,ds:data,ss:stackstart:mov ax,data mov ds,axpush x push y push zcall subProc pop zpop ypop xmov ax,zmov ah,4chint 21hsubProc proc near push bpmov bp,spmov ax,0mov bx,0 mov cx,0mov dx,0mov cx,bp+6 ;ymov dx,

16、bp+8 ;xmov ax,dx imul cl add ax,dxsub ax,cxmov bp+4,axpop bpret subProc endp code ends end start四. 实验结果(3.1:地址表:必要的截图)转移表3.2五. 实验体会本次实验练习了汇编语言的分支程序设计,实现了地址表、转移表和子程序。实验四汇编语言高级编程专题一. 实验目的1、汇编语言宏程序设计;2、 掌握中断服务子程序的编写。3、 汇编语言与高级语言的混编。二. 实验内容1、编写一个宏,求三个数的最小数,原型为:MIN3 x,y,z,min2、挂接 1CH 中断,正计时 60 秒后。要求屏幕显示

17、0-59 的秒数。3、VC+中编写内联汇编,将字节数组的每个元素高低四位互换。char dbyte = 0x34,0x45,0x56,0x67,0xaf;三. 实验过程和程序4.1MIN3 MACRO x,y,z,minmov al,x mov bl,y mov cl,zmov dl,mincmp al,bl jl L1 mov dl,bljmp L2L1:mov dl,aljmp L2L2:cmp dl,cl jl over mov dl,cljmp overover:mov min,dlENDM MIN3data segmentx db 13y db 35z db 7min db 0 da

18、ta endsstack segment stack dw 1024 dup(?)stack ends code segmentassume cs:code,ds:data,ss:stackstart:mov ax,data mov ds,ax MIN3 x,y,z,minmov ah,4chint 21hcode ends end start 4.2INTNO EQU 1CHDATA SEGMENT OLDISR DW ?,? TIMER DB 0COUNTER DW 0ISDONE DB 0 DATA ENDSSTACK SEGMENT STACKDW 1024 DUP(?)STACK E

19、NDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AXMOV AX,0MOV ES,AX;PROTECT ISRTMOV AL,INTNO MOV AH,35H;获取中断向量。接收:AL=中断向量号。返回:ES:BX=中断处理程序的段/偏移地址INT 21HMOV OLDISR0,BX MOV AX,ESMOV OLDISR2,AX;SET NEW ISRT PUSH DSMOV AX,SEG ISR MOV DS,AXMOV DX,OFFSET ISR;DS:DX 为 ISR 中断子程序的段/偏移地址

20、MOV AL,INTNOMOV AH,25H;设置中断向量。将中断向量表中的表项设置为新的地址。接收:DS:DX 指向要INT 21H POP DS到表中的中断处理程序地址;AL=中断号;WAIT HEREWAITHERE:CMP ISDONE,1JNE WAITHEREEXIT:;RESTORE PUSH DSMOV DX,OLDISR0 MOV AX,OLDISR2 MOV DS,AXMOV AL,INTNO MOV AH,25H INT 21HPOP DSMOV AH,4CHINT 21HISR PROC FARPUSH DX PUSH AXMOV AX,DATAMOV DS,AXSTIMOV AH,0BH INT 21HCMP AL,0FFH JNE L2MOV AH,08H INT 21H CMP AL,'A' JE L1CMP AL,'a'JE L1JMP L2L1:MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21HMOV COUNTER,0 MOV TIMER,0MOV IS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论