微机原理大作业_第1页
微机原理大作业_第2页
微机原理大作业_第3页
微机原理大作业_第4页
微机原理大作业_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业第一次上机实验目的1. 熟练掌握8086/8088的各种寻址方式及应用。2.掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础。实验仪器586微机 一台实验内容1关于数据的寻址方式练习8086/8088 提供多种方式实现操作数寻址,大体可分为7种:a. 立即寻址b. 寄存器寻址 c. 直接寻址d. 寄存器间接寻址 e.寄存器相对寻址f. 基址变址寻址 g. 基址变址且相对寻址掌握8086/8088的这些寻址方式,是学习汇编语言编程的关键。因此,我们编

2、写了下面的程序段,以数据传送指令为例,列举了部份寻址方式,请同学们按下列要求认真完成。1 在全屏幕编辑软件下,建立以下汇编语言源程序:STACK SEGMENT STACK DB 0B0H, 0B1H, 0B2H, 0B3H, 0B4H, 0B5H, 0B6H, 0B7H, DB 0B8H, 0B9H DB 0BAH, 0BBH, 0BCH, 0BDH, 0BEH, 0BFH DB 10H DUP(00)STACK ENDSDATA1 SEGMENT DB 0A0H, 0A1H, 0A2H, 0A3HTABLE DW 0A5A4H DB 0A6H, 0A7H, 0A8H, 0A9H, 0AAH

3、, 0ABH DB 0ACH, 0ADH, 0AEH, 0AFHDATA1 ENDSDATA2 SEGMENT DB 0C0H, 0C1H, 0C2H, 0C3H, 0C4H, 0C5H, 0C6H, 0C7H DB 0C8H ,0C9H, 0CAH, 0CBH, 0CCH, 0CDH, 0CEH, 0CFHDATA2 ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA1, ES:DATA2, SS:STACK START:MOV AX, DATA1 MOV DS, AX MOV AX, DATA2 MOV ES, AX MOV BX, 0004H MOV CX,

4、 0005H MOV BP, 0003H MOV SI, 0002H MOV DI, 0001H MOV AX, CX ;以下指令按后表要求完成 MOV AX, 500H MOV AX, TABLE MOV AX, ES:BX MOV AX, BX+05H MOV AX, SS:BX+03H MOV AX, TABLE BX MOV AX, 07H BX MOV AX, BP MOV AX, TABLE BP MOV AX, 08H BP MOV AX, BP+06H MOV AX, DS:BP+03H MOV AX, BP+05H MOV AX, ES: SI+03H MOV AX, DI+

5、06H MOV AX, DI+05H MOV AX, TABLE SI MOV AX, SI MOV AX, TABLE DI MOV AX, SI+05H MOV AX, BX DI+01H MOV AX, BX SI+03H MOV AX, TABLE BX SI MOV AX, ES:BX DI MOV AX, BP DI+02H MOV AX, TABLE BP DI MOV AX, ES:BP SI MOV AX, BP SI+05H MOV AX, 03H BP DI MOV AX, BP SI MOV AX, BP+02H DI+03H MOV AX, TABLE BP+02H

6、DI+03H MOV AH, 4CH INT 21H CODE ENDS END START2用MASM.EXE宏汇编程序对以上源程序进行汇编,其方法为: MASM 文件名.ASM ; 回车 此时,如果源程序中无语法错误,则在磁盘上形成文件名.OBJ文件。3用LINK.EXE连接程序对文件名.OBJ文件进行连接,其方法为: LINK 文件名.OBJ ; 回车此时,如果连接正确,则在磁盘上形成:文件名.EXE 可执行文件。4 对源程序中从MOV AX, CX开始以下所有指令按下表进行计算。 指令SRC寻址方式SRC的地址AX推算值AX实际值MOV AX, CX 寄存器寻址00050005MOV

7、AX, 500H 立即寻址05000500MOV AX, TABLE 直接寻址1541:0004A5A4A5A4MOV AX, ES:BX 寄存器间接寻址1542:0004C5C4C5C4MOV AX, BX+05H 寄存器相对寻址1541:0009AAA9AAA9MOV AX, SS:BX+03H 寄存器相对寻址153F:0007B8B7B8B7MOV AX, TABLE BX 寄存器相对寻址1541:0008A9A8A9A8MOV AX, 07H BX 寄存器相对寻址1541:000BACABACABMOV AX, BP 寄存器间接寻址153F:0003B4B3B4B3MOV AX, TA

8、BLE BP寄存器相对寻址1541:0007A8A7A8A7MOV AX, 08H BP 寄存器相对寻址153F:000BBCBBBCBBMOV AX, BP+06H 寄存器相对寻址153F:0009BAB9BAB9MOV AX, DS:BP+03H寄存器相对寻址1541:0006A7A6A7A6MOV AX, BP+05H寄存器相对寻址153F:0008B9B8B9B8MOV AX, ES: SI+03H寄存器相对寻址1542:0005C6C5C6C5MOV AX, DI+06H寄存器相对寻址1541:0007A8A7A8A7MOV AX, DI+05H 寄存器相对寻址1541:0006A7

9、A6A7A6MOV AX, TABLE SI 寄存器相对寻址1541:0006A7A6A7A6MOV AX, SI 寄存器间接寻址1541:0002A3A2A3A2MOV AX, TABLE DI 寄存器相对寻址1541:0005A6A5A6A5MOV AX, SI+05H 寄存器相对寻址1541:0007A8A7A8A7MOV AX, BX DI+01H 基址变址且相对寻址1541:0006A7A6A7A6MOV AX, BX SI+03H 基址变址且相对寻址1541:0009AAA9AAA9MOV AX, TABLE BX SI 基址变址且相对寻址1541:000AABAAABAAMOV

10、AX, ES:BX DI 基址变址寻址1542:0005C6C5C6C5MOV AX, BP DI+02H 基址变址且相对寻址153F:0006B7B6B7B6MOV AX, TABLE BP DI 基址变址且相对寻址1541:0008A9A8A9A8MOV AX, ES:BP SI 基址变址寻址1542:0005C6C5C6C5MOV AX, BP SI+05H 基址变址且相对寻址153F:000ABBBABBBAMOV AX, 03H BP DI 基址变址且相对寻址153F:0007B8B7B8B7MOV AX, BP SI 基址变址寻址153F:0005B6B5B6B5MOV AX, B

11、P+02H DI+03H 基址变址且相对寻址153F:0009BAB9BAB9MOV AX, TABLE BP+02H DI+03H 基址变址且相对寻址1541:000DAEADAEAD5 用T命令单步运行程序,并用R 命令检查AX结果,同时将结果作为实际值填入上表中,和推算值进行比较,从而检验自己对该条指令对应的寻址方式是否掌握。也可用D命令察看存贮器的内容,具体操作方法参看DEBUG使用部分。四、问题讨论在上表中,分析AX推算值与实际值有何不同?找出错误原因,小结出各种寻址方式所用的段寄存器的规律来第二次上机实验目的1 熟练掌握汇编语言程序设计的方法及上机步骤。2 掌握算术运算中,十进制数

12、调整指令的应用。3 掌握子程序的设计方法。4 掌握DOS功能的调用方法。二、实验仪器586微机 一台实验内容1. 编写求十进制数与(本人学号)之和的程序,并将和以十进制数的形式送屏幕显示。编程要求与提示: 1 两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。 2 和以压缩十进制数的形式存入SUM以下单元。 3 将和送到屏幕显示部分功能的实现采用子程序的形式。 4 实验步骤如下:a. 用全屏幕编辑软件建立源程序。b用masm.exe汇编程序对源程序进行汇编,形成目标程序。c. 用link.exe连接程序对目标程序进行连接形成可执行文件。d. 用DEBUG对连接通过

13、的可执行程序进行调试。2. 有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。编程要求与提示: 1 参加排序的数据及个数由学生自己定义。 2 要将排序前的数组和排序后的数组在屏幕上显示出来。 3 实验步骤同内容一。三、实验程序、流程图与运行结果1、实验程序STACK SEGMENT STACK DW 256 DUP(?)TOP LABEL WORDSTACK ENDS ;堆栈段DATA SEGMENTADD1 DD HADD2 DD HSUM DD ?DATA ENDS ;数据段CODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA,SS:STAC

14、KSTART: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA SP,TOP LEA SI,ADD1 LEA DI,ADD2 MOV AL,SI ADD AL,DI DAA MOV BYTE PTR SUM,AL MOV AL,SI+1 ADC AL,DI+1 DAA MOV BYTE PTR SUM+1,AL MOV AL,SI+2 ADC AL,DI+2 DAA MOV BYTE PTR SUM+2,AL MOV AL,SI+3 ADC AL,DI+3 DAA MOV BYTE PTR SUM+3,AL MOV AX,WORD PTR SU

15、M+2 CALL DISPAX MOV AX,WORD PTR SUM CALL DISPAX MOV AH,4CH INT 21H DISPAL PROC NEAR PUSH AX PUSH CX PUSH DX PUSH AX MOV CL,4 SHR AL,CL CALL CHANG MOV AH,02 MOV DL,AL INT 21H POP AX AND AL,0FH CALL CHANG MOV AH,02 MOV DL,AL INT 21H POP DX POP CX POP AX RETDISPAL ENDPCHANG PROC NEAR CMP AL,10 JNGE CHA

16、NG1 ADD AL,7CHANG1: ADD AL,30H RETCHANG ENDPDISPAX PROC NEAR XCHG AL,AH CALL DISPAL XCHG AH,AL CALL DISPAL RETDISPAX ENDPCODE ENDS END START运行结果流程图2、实验程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DW 0212H,1435H,0000H,9999H,1AAAHSTRING1 DB INPUT NUMBER:,0DH,0AH,$STRING2 DB THE BIGER

17、 TO THE SMALLER IS:,0DH,0AH,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA DX,STRING1 MOV AH,09H INT 21H MOV CX,6 LEA SI,DATA1L1: MOV AX,SI ADD SI,2 CALL DISPAX CALL DISPCR LOOP L1 MOV CX,5 LEA SI,DATA1 ADD SI,10LP1: PUS

18、H CX PUSH SILP2: MOV AX,SI CMP AX,SI-2 JBE NOXCHG XCHG AX,SI-2 MOV SI,AXNOXCHG: DEC SI DEC SI LOOP LP2 POP SI POP CX LOOP LP1 LEA DX,STRING2 MOV AH,09H INT 21H MOV CX,6 LEA SI,DATA1L2: MOV AX,SI ADD SI,2 CALL DISPAX CALL DISPCR LOOP L2 MOV AH,4CH INT 21HDISPAL PROC PUSH AX PUSH CX PUSH DX PUSH AX MO

19、V CL,4 SHR AL,CL CALL CHANG MOV AH,02H MOV DL,AL INT 21HPOP AX AND AX,0FH CALL CHANG MOV AH,02H MOV DL,AL INT 21H POP DX POP CX POP AX RETDISPAL ENDPCHANG PROC CMP AL,10 JNGE CHANG1 ADD AL,7CHANG1: ADD AL,30H RETCHANG ENDP DISPAX PROC XCHG AL,AH CALL DISPAL XCHG AH,AL CALL DISPAL RETDISPAX ENDPDISPC

20、R PROC PUSH AX PUSH DX MOV AH,2 MOV DL,0AH INT 21H MOV AH,2 MOV DL,0DH INT 21H POP DX POP AX RETDISPCR ENDPCODE ENDS END START实验结果流程图问题讨论 1在以十进制数形式参加运算的程序设计中,应注意那些问题。2总结循环程序设计的步骤及方法。第三、四次上机一、实验目的 1.增强和提高汇编语言程序设计的能力,掌握模块化程序设计的方法. 2.熟练掌握DOS常用功能的调用方法二、实验仪器586微机 一台三、实验内容 编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用

21、户从键盘输入的五个命令(1-5),各命令功能分别为: (1)按下“1”键,完成字符串小写字母变成大写字母。 用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。 (2)按下“2”键,完成找最大值(二选一)。 a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来; b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (3)按

22、下“3”键,完成排序(二选一)。 a.接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示; b.接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (4)按下“4”键,显示时间。 首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),然后,在屏幕上不断显示时间,格式为:XX(时): XX(分): XX(秒)最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。(5)按下“5”键,结束程序运行,返回系统提示符。实验程序、流程图与结果实验程序D

23、ISPL MACRO STR ;Function to display strings PUSH DX PUSH AX LEA DX,STR MOV AH,09H INT 21H POP AX POP DXENDMISCONTINUE MACRO L ;Macro to judge whether to continue, L is a mark DISPS 15,10,SMENU MOV AH,08H INT 21H CMP AL,1BH JNE L ;若用JE会导致编译,跳不了那么远 JMP MAINENDMCURSOR MACRO CURX,CURY PUSH AX PUSH BX PU

24、SH DX ;DX必须保护,始终指向输入缓冲区 MOV AH,02H MOV DH,CURX MOV DL,CURY MOV BH,0 INT 10H POP DX POP BX POP AXENDMDISPS MACRO X,Y,STR ;将STR的内容显示到X,Y的位置 PUSH AX PUSH BX PUSH DX MOV AH,02H MOV BH,00H ;显示页码,第0页 MOV DH,X ;行(X坐标) MOV DL,Y ;列(Y坐标) INT 10H LEA DX,STR MOV AH,09H INT 21H POP DX POP BX POP AXENDMSCROLL MAC

25、RO N,ULR,ULC,LRR,LRC,ATT PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,06H MOV AL,N ;N=上卷行数;N=0时,清窗口 MOV CH,ULR ;左上角行号(X) MOV CL,ULC ;左上角列号(Y) MOV DH,LRR ;右下角行号 MOV DL,LRC ;右下角列号 MOV BH,ATT ;卷入行属性,颜色设置 INT 10H POP DX POP CX POP BX POP AXENDMPREP MACRO T ;预处理,显示子菜单标题(T),输入提示信息等 LEA SI,INBUF+1 LEA DI,OUTBUF

26、SCROLL 21,2,0,22,79,0FH ;清屏,内窗 DISPS 3,20,T ;显示子菜单标题(3行20列显示T) DISPS 6,2,CAPION ;Prompt for a string to change DISPS 8,2,INCAP ;Print Your input is: MOV AH,0AH INT 21H MOV CH,0 MOV CL,SI ;获取输入字符串中,字符的个数 INC SI ENDMSTACK SEGMENT STACK STACK DB 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTBASE DW MA

27、IN,LTC,FMV,SORTS,STM,EXIT ;建立跳转表WELCM DB Welcome to use this program!$MMENUD DB -Mr.Hao$MMENUC DB Choose An Item,And Input The Number!$MMENU1 DB 1 -Lowercase Letters To Capital Letters$MMENU2 DB 2 -Find The Maximum Value$MMENU3 DB 3 -Sort$MMENU4 DB 4 -Set Time$MMENU5 DB 5 -Exit!$ SMENU DB Press Any

28、Key To Redo,Press ESC To Return To Main Menu!$WROCAP DB WRONG! You have press key! Please input a number between 1 and 5!$CAPION DB Please Input Your Strings and End With Enter Key!$INCAP DB Your Input Is: $INBUF DB 100 DB ? DB 100 DUP(?)OUTCAP DB My Output Is: $OUTBUF DB 100 DUP(?)MAXCAP DB The cha

29、r of max ASCII is: .$ERRINF DB ERROR! Please check the format you input!$TIMESETC DB Now,you can set the time! $ TIMESETF DB Format:(01 25 32) or (01:25:32),and end with CR !$TIMESETS DB Succeed! $ TDINV DB Invalid time data! Input again!$ NODATCAP DB You have input nothing!$TIME DB 8 DUP (:),12 DUP

30、 ( );时间的底DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP LEA DX,INBUF ;指向输入缓冲区 CLC MAIN: SCROLL 0,0,0,24,79,0 ;清屏 SCROLL 21,2,0,22,79,0FH ;设置菜单颜色,黑底白字 /注意逗号应为半角字符,否则提示out of memoryu DISPS 6,30,MMENUD DISPS 8,20,MME

31、NUC DISPS 10,20,MMENU1 DISPS 12,20,MMENU2 DISPS 14,20,MMENU3 DISPS 16,20,MMENU4 DISPS 18,20,MMENU5ML: CURSOR 19,1DH MOV AH,01H ;Recieve the choice INT 21H CMP AL,31H JL ERROR CMP AL,35H JG ERROR AND AX,00FH LEA BX,BASE SHL AL,1 ;将AL乘2,因为跳转表地址是dw类型的, ADD BX,AX JMP WORD PTR BX ;CMP AL,1 ;JE LTC ;Choos

32、e 1,lowercase letter to capital letter ;CMP AL,2 ;JE FMV ;Choose 2,find the maximum value ;CMP AL,3 ;JE SORTS ;Choose 3,sort ;CMP AL,4 ;JE STM ;Choose 4,show current time ;CMP AL,5 ;JE EXIT ;Choose 5,exit the programERROR: CMP AL,0DH ;如果是回车的话,赋CR JE MCR MOV WROCAP+23,AL ;Other char MOV WROCAP+24, JM

33、P DMCR: MOV WORD PTR WROCAP+23,RCD: DISPS 20,5,WROCAP ;Show the wrong information JMP MLLTC: CALL LLTOCL ISCONTINUE LTCFMV: CALL FMAXV ISCONTINUE FMVSORTS: CALL SORT ISCONTINUE SORTSSTM: CALL SHOWTIME ISCONTINUE STMEXIT: SCROLL 0,0,0,24,79,0 ;清屏 MOV AH,4CH ;Exit. INT 21H LLTOCL PROC REFLASHL:PREP MM

34、ENU1 ;显示子菜单 CMP CL,0 ;若输入为空则跳转至REDO JE REFLASHLLL1: MOV AL,SI CMP AL,a JB MTOB ;NO CHANGE CMP AL,z JA MTOB SUB AL,20H ;ConvertMTOB: MOV DI,AL INC SI INC DI LOOP LL1 MOV BYTE PTR DI,$ DISPS 10,2,OUTCAP DISPS 10,17,OUTBUF RETLLTOCL ENDP FMAXV PROC PUSH BXREFLASHF:PREP MMENU2 ;显示子菜单 CMP CL,0 ;若输入为空则跳转至

35、REDO JE REFLASHF MOV AL,0FL1: CMP AL,SI JA NEXT MOV AL,SINEXT: INC SI LOOP FL1 MOV MAXCAP+26,AL DISPS 10,2,MAXCAP POP BX RET FMAXV ENDP SORT PROC PREP MMENU3 ;显示子菜单标题(T),输入提示信息等 DEC CX ADD SI,CX MOV BYTE PTR SI+1,$LP1: PUSH CX PUSH SILP2: MOV AL,SI CMP AL,SI-1 JBE NOXCHG XCHG AL,SI-1 MOV SI,ALNOXCHG

36、: DEC SI LOOP LP2 POP SI POP CX LOOP LP1 DISPS 10,2,OUTCAP DISPS 10,17,INBUF2 ;显示排序结果 RETSORT ENDPSHOWTIME PROC SCROLL 21,2,0,22,79,0FH 清屏,内窗 DISPS 3,20,MMENU4 DISPS 5,25,TIMESETC DISPS 7,15,TIMESETFSHOW: MOV SI,0 MOV BL,100 DIV BL MOV AH,2CH ;GET TIME INT 21H MOV AL,CH ;HOUR CALL BCDASC ;要转换的在AL中 INC SI MOV AL,CL ;MINUTE CALL BCDASC INC SI MOV AL,DH CALL BCDASC ;要转换的在AL中 MOV BP,OFFSET TIME ;使用int 10H的13H号功能,在Teletype模式下显示字符串(BP为地址) MOV

温馨提示

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

评论

0/150

提交评论