1、微机原理大作业第一次上机实验一、实验目的1.熟练掌握8086/8088的各种寻址方式及应用。 2.掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础。二、实验仪器 586微机 1台三、实验内容 1.关于数据的寻址方式练习 8086/8088 提供多种方式实现操作数寻址,大体可分为7种: a. 立即寻址 b. 寄存器寻址 c. 直接寻址 d. 寄存器间接寻址 e. 寄存器相对寻址 f. 基址变址寻址 g. 基址变址且相对寻址四、实验数据及结果指令SRC寻址方式SRC的地址AX推算值AX实际值MOV AX, CX寄存器寻址0005H0005HMOV AX, 500H立即寻址05
2、00H0500HMOV AX, TABLE直接寻址15C5:00040A5A4H0A5A4HMOV AX, ES:BX寄存器间接寻址15C6:00040C5C4H0C5C4HMOV AX, BX+05H寄存器相对寻址15C5:00090AAA9H0AAA9HMOV AX, SS:BX+03H寄存器相对寻址15C3:00070B8B7H0B8B7HMOV AX, TABLE BX寄存器相对寻址15C5:00080A9A8H0A9A8HMOV AX, 07H BX寄存器相对寻址15C5:000B0ACABH0ACABHMOV AX, BP寄存器相对寻址15C3:00030B4B3H0B4B3HMO
3、V AX, TABLE BP寄存器相对寻址15C5:00070A8A7H0A8A7HMOV AX, 08H BP寄存器相对寻址15C3:00080BCBBH0BCBBHMOV AX, BP+06H寄存器相对寻址15C3:00090BAB9H0BAB9HMOV AX, DS:BP+03H寄存器相对寻址15C5:00060A7A6H0A7A6HMOV AX, BP+05H寄存器相对寻址15C3:00080B9B8H0B9B8HMOV AX, ES: SI+03H寄存器相对寻址15C6:00050C6C5H0C6C5HMOV AX, DI+06H寄存器相对寻址15C5:00070A8A7H0A8A7
4、HMOV AX, DI+05H寄存器相对寻址15C5:00060A7A6H0A7A6HMOV AX, TABLE SI寄存器相对寻址15C5:00060A7A6H0A7A6HMOV AX, SI寄存器间接寻址15C5:00020A3A2H0A3A2HMOV AX, TABLE DI寄存器相对寻址15C5:00050A6A5H0A6A5HMOV AX, SI+05H寄存器相对寻址15C5:00070A8A7H0A8A7HMOV AX, BX DI+01H基址变址且相对寻址15C5:00060A7A6H0A7A6HMOV AX, BX SI+03H基址变址且相对寻址15C5:00090AAA9H0
5、AAA9HMOV AX, TABLE BX SI基址变址且相对寻址15C5:000A0ABAAH0ABAAHMOV AX, ES:BX DI基址变址寻址15C6:00050C6C5H0C6C5HMOV AX, BP DI+02H基址变址且相对寻址15C3:00060B7B6H0B7B6HMOV AX, TABLE BP DI基址变址且相对寻址15C6:00080A9A8H0A9A8HMOV AX, ES:BP SI基址变址寻址15C6:00050C6C5H0C6C5HMOV AX, BP SI+05H基址变址且相对寻址15C3:000A0BBBAH0BBBAHMOV AX, 03H BP DI
6、基址变址且相对寻址15C3:00070B8B7H0B8B7HMOV AX, BP SI基址变址寻址15C3:00050B6B5H0B6B5HMOV AX, BP+02H DI+03H基址变址且相对寻址15C3:00090BAB9H0BAB9HMOV AX, TABLEBP+02H DI+03H基址变址且相对寻址15C5:000D0AEADH0AEADH第二次上机实验一、实验目的1 熟练掌握汇编语言程序设计的方法及上机步骤。2 掌握算术运算中,十进制数调整指令的应用。3 掌握子程序的设计方法。4 掌握DOS功能的调用方法。二、实验仪器 586微机 1台三、实验内容 1.编写求十进制数126785
7、32与21736543之和的程序,并将和以十进制数的形式送屏幕显示。编程要求与提示: 1 两个加数均以组合十进制数形式存放在ADD1和ADD2为首址的存贮器单元。 2 和以组合十进制数的形式存入SUM以下单元。 3 将和送到屏幕显示部分功能的实现采用子程序的形式。 4 实验步骤如下:a. 用全屏幕编辑软件建立源程序。 b用masm.exe汇编程序对源程序进行汇编,形成目标程序。 c. 用link.exe连接程序对目标程序进行连接形成可执行文件。 d. 用DEBUG对连接通过的可执行程序进行调试。 2.有一个首地址为A的N字数组,请编写程序使该数组中的数按从大到小的次序排列。 编程要求及提示:
8、1 参加排序的数据及个数由学生自己定义。 2 要将排序前的数组和排序后的数组在屏幕上显示出来。 3 实验步骤: a. 用全屏幕编辑软件建立源程序。 b用masm.exe汇编程序对源程序进行汇编,形成目标程序。 c. 用link.exe连接程序对目标程序进行连接形成可执行文件。 d. 用DEBUG对连接通过的可执行程序进行调试。四、源程序及运行结果1.源程序:STACK SEGMENT STACK STACK DW 100H DUP(?)STACK ENDSDATA SEGMENTADD1 DD 12678532H ADD2 DD 21736543HSUM DD ?DATA ENDSCODE S
9、EGMENT 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 SI,ADD1 LEA DI,ADD2 LEA BX,SUM MOV AL,SI ADD AL,DI DAA MOV BX,AL MOV AL,SI+1 ADC AL,DI+1 DAA MOV BX+1,AL MOV AL,SI+2 ADC AL,DI+2 DAA MOV BX+2,AL MOV AL,SI+3 ADC AL,DI+3 DAA MOV BX+3,AL MOV
10、 DL,00 ADC DL,00 CALL DISPSUM MOV AH,4CH INT 21HDISPSUM PROC NEAR PUSH AX PUSH BX PUSH CX PUSH SI MOV SI ,4 PUSH DX MOV CX,5 LAB: PUSH CX PUSH BX MOV AL,DL MOV BL,DL MOV CL,4 SHR AL,CL ADD AL,30H MOV AH,02 MOV DL,AL INT 21H AND BL,0FH ADD BL,30H MOV AH,02 MOV DL,BL INT 21H POP BX POP CX DEC SI MOV D
11、L,BXSI LOOP LAB POP DX POP SI POP CX POP BX POP AX RETDISPSUM ENDPCODE ENDS END START运行结果:2.源程序STACK SEGMENT STACK DB 256 DUP(?)STACK ENDSDATA SEGMENTDATA1 DW 4031H,3859H,0245H,1111H,0A231H,0FFFFHSTRING1 DB Original numbers:,0DH,0AH,$STRING2 DB The numbers from large to small:,0DH,0AH,$DATA ENDSCODE
12、 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 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: PUSH CX PUSH SILP2: MOV AX,SI CMP AX,SI-2 JB
13、E 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 MOV CL,4 SHR AL,CL CALL CHANG MOV AH,02H MO
14、V DL,AL INT 21H POP 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 ENDDISPAX PROC XCHG AL,AH CALL DISPAL XCHG AH,AL CALL DISPAL RETDISPAX ENDPDISPCR PROC PUSH AX PUSH DX MOV AH,2 MOV DL,0AH
15、 INT 21H MOV AH,2 MOV DL,0DH INT 21H POP DX POP AX RETDISPCR ENDPCODE ENDS END START运行结果:第三次上机实验一、实验目的 1.增强和提高汇编语言程序设计的能力,掌握模块化程序设计的方法. 2.熟练掌握DOS常用功能的调用方法.二、实验仪器 586微机 1台三、实验内容 编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的四个命令(1-4),各命令功能分别为: (1)按下“1”键,完成字符串小写字母变成大写字母。 用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个
16、检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。 (2)按下“2”键,完成找最大值(二选一)。 a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来; b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (3)按下“3”键,完成排序(二选一)。 a.接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示; b.接收用户输入若干个有符号8位数(以空格或逗号为分隔
17、符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (4)按下“4”键,结束程序运行,返回系统提示符。四、源程序及运行结果源程序:DISPL MACRO STR PUSH DX PUSH AX LEA DX,STR MOV AH,09H INT 21H POP AX POP DXENDMISCONTINUE MACRO L DISPS 15,10,SMENU MOV AH,08H INT 21H CMP AL,1BH JNE L JMP MAINENDMCURSOR MACRO CURX,CURY PUSH AX PUSH BX PUSH DX MOV
18、AH,02H MOV DH,CURX MOV DL,CURY MOV BH,0 INT 10H POP DX POP BX POP AXENDMDISPS MACRO X,Y,STR PUSH AX PUSH BX PUSH DX MOV AH,02H MOV BH,00H MOV DH,X MOV DL,Y INT 10H LEA DX,STR MOV AH,09H INT 21H POP DX POP BX POP AXENDMSCROLL MACRO N,ULR,ULC,LRR,LRC,ATT PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,06H MOV
19、AL,N MOV CH,ULR MOV CL,ULC MOV DH,LRR MOV DL,LRC MOV BH,ATT INT 10H POP DX POP CX POP BX POP AXENDMPREP MACRO T LEA SI,INBUF+1 LEA DI,OUTBUF SCROLL 21,2,0,22,79,0FH DISPS 3,20,T DISPS 6,2,CAPION DISPS 8,2,INCAP MOV AH,0AH INT 21H MOV CH,0 MOV CL,SI INC SI ENDMSTACK SEGMENT STACK STACK DB 100H DUP(?)
20、TOP LABEL WORDSTACK ENDSDATA SEGMENTBASE DW MAIN,LTC,FMV,SORTS,EXITWELCM DB Welcome to this program!$MMENUC DB Please input the number!$MMENU1 DB 1 -Lowercase Letters To Capital Letters$MMENU2 DB 2 -Find The Maximum figure$MMENU3 DB 3 -Sort$MMENU4 DB 4 -Exit!$ SMENU DB Press Any Key To restart,Press
21、 ESC To Return To Main Menu!$WROCAP DB WRONG! You have press key! Please input a number between 1 and 4!$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 char of max ASCII is
22、: .$ERRINF DB ERROR! Please check the format you input!$TDINV DB Invalid time data! Input again!$ NODATCAP DB You have input nothing!$TIME DB 8 DUP (:),12 DUP ( )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
23、DX,INBUF CLCMAIN: SCROLL 0,0,0,24,79,0 SCROLL 25,0,0,24,79,50H SCROLL 21,2,0,22,79,0FH DISPS 8,20,MMENUC DISPS 10,20,MMENU1 DISPS 12,20,MMENU2 DISPS 14,20,MMENU3 DISPS 16,20,MMENU4ML: CURSOR 19,1DH MOV AH,01H INT 21H CMP AL,31H JL ERROR CMP AL,35H JG ERROR AND AX,00FH LEA BX,BASE SHL AL,1 ADD BX,AX
24、JMP WORD PTR BX ; CMP AL,1 ; JE LTC ; CMP AL,2 ; JE FMV ; CMP AL,3 ; JE SORTS ; CMP AL,4 ; JE EXIT ERROR: CMP AL,0DH JE MCR MOV WROCAP+23,AL MOV WROCAP+24, JMP DMCR: MOV WORD PTR WROCAP+23,RCD: DISPS 20,5,WROCAP JMP ML LTC: CALL LLTOCL ISCONTINUE LTCFMV: CALL FMAXV ISCONTINUE FMVSORTS: CALL SORT ISC
25、ONTINUE SORTSEXIT: SCROLL 0,0,0,24,79,0 MOV AH,4CH INT 21HLLTOCL PROCREFLASHL:PREP MMENU1 CMP CL,0 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 ENDPFMA
26、XV PROC PUSH BXREFLASHF:PREP MMENU2 CMP CL,0 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 ENDPSORT PROC PREP MMENU3 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,AL NOXCHG: DEC SI LOOP LP2 POP SI POP CX LOOP LP1 DISPS 10,2,OUTCAP DISPS 10,17,INBUF2 RETSORT ENDPBCDASC PROC NEAR PUSH BX CBW MOV BL,10 DIV BL ADD AL,30H MOV TIMESI,AL INC SI ADD AH,30H MOV TIMESI,AH INC SI POP BX RETBCDASC ENDPCODE ENDSEND START运行结果:按下“4”键后,返回系统提示符
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1