1、专业:信息对抗技术班级:1302031姓名:韩冰学号:13020310042指导教师:张娟微机原理上机报告目 录一、第一次上机21.实验目的22.实验仪器23.实验内容24.实验结果55.问题讨论7二、第二次上机81.实验目的82.实验仪器83.实验内容84.实验结果105.问题讨论11三、第三、四次上机111.实验目的112.实验仪器113.实验内容11 4.实验结果2527第一次上机一、实验目的1. 熟练掌握8086/8088的各种寻址方式及应用。2.掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础。二、实验仪器586微机 1台三、实验内容1.关于数据的寻址方式练习8
2、086/8088 提供多种方式实现操作数寻址,大体可分为7种: a. 立即寻址 b. 寄存器寻址 c. 直接寻址 d. 寄存器间接寻址 e. 寄存器相对寻址 f. 基址变址寻址 g. 基址变址且相对寻址掌握8086/8088的这些寻址方式,是学习汇编语言编程的关键。2.实验步骤在全屏幕编辑软件下,建立以下汇编语言源程序。源代码: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
3、)STACK ENDSDATA1 SEGMENT DB 0A0H, 0A1H, 0A2H, 0A3HTABLE DW 0A5A4H DB 0A6H, 0A7H, 0A8H, 0A9H, 0AAH, 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,
4、 ES:DATA2, SS:STACK START: MOV AX, DATA1 MOV DS, AX MOV AX, DATA2 MOV ES, AX MOV BX, 0004H MOV CX, 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,
5、08H BP MOV AX, BP+06H MOV AX, DS:BP+03H MOV AX, BP+05H MOV AX, ES: SI+03H MOV AX, DI+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,
6、BP SI+05H MOV AX, 03H BP DI MOV AX, BP SI MOV AX, BP+02H DI+03H MOV AX, TABLE BP+02H DI+03H MOV AH, 4CH INT 21HCODE ENDS END START用MASM.EXE宏汇编程序对以上源程序进行汇编用LINK.EXE连接程序对文件名.OBJ文件进行连接对源程序中从MOV AX, CX开始以下所有指令按下表进行计算。四、实验结果指令SRC寻址方式SRC的地址AX推算值AX实际值MOV AX, CX 寄存器寻址0005H0005HMOV AX, 500H 立即寻址0500H0500HMOV
7、 AX, TABLE 直接寻址DS:0004HA5A4HA5A4HMOV AX, ES:BX 寄存器间接寻址ES:0004HC5C4HC5C4HMOV AX, BX+05H 寄存器相对寻址DS:0009HAAA9HAAA9HMOV AX, SS:BX+03H 寄存器相对寻址SS:0007HB8B7HB8B7HMOV AX, TABLE BX 寄存器相对寻址DS:0008HA9A8HA9A8HMOV AX, 07H BX 寄存器相对寻址DS:000BHACABHACABHMOV AX, BP 寄存器间接寻址SS:0003HB4B3HB4B3HMOV AX, TABLE BP寄存器相对寻址DS:0
8、007HA8A7HA8A7HMOV AX, 08H BP 寄存器相对寻址SS:000BHBCBBHBCBBHMOV AX, BP+06H 寄存器相对寻址SS:0009HBAB9HBAB9HMOV AX, DS:BP+03H寄存器相对寻址DS:0006HA7A6HA7A6HMOV AX, BP+05H寄存器相对寻址ES:0008HB9B8HB9B8HMOV AX, ES: SI+03H寄存器相对寻址ES:0005HC6C5HC6C5HMOV AX, DI+06H寄存器相对寻址DS:0007HA8A7HA8A7HMOV AX, DI+05H 寄存器相对寻址DS:0006HA7A6HA7A6HMOV
9、 AX, TABLE SI 寄存器相对寻址DS:0006HA7A6HA7A6HMOV AX, SI 寄存器间接寻址DS:0002HA3A2HA3A2HMOV AX, TABLE DI 寄存器相对寻址DS:0005HA6A5HA6A5HMOV AX, SI+05H 寄存器相对寻址DS:0007HA8A7HA8A7HMOV AX, BX DI+01H 基址变址且相对寻址DS:0006HA7A6HA7A6HMOV AX, BX SI+03H 基址变址且相对寻址DS:0009HAAA9HAAA9HMOV AX, TABLE BX SI 基址变址且相对寻址DS:000AHABAAHABAAHMOV AX
10、, ES:BX DI 基址变址寻址DS:0005HC6C5HC6C5HMOV AX, BP DI+02H 基址变址且相对寻址DS:0006HB7B6HB7B6HMOV AX, TABLE BP DI 基址变址且相对寻址DS:0008HA9A8HA9A8HMOV AX, ES:BP SI 基址变址寻址DS:0005HC6C5HC6C5HMOV AX, BP SI+05H 基址变址且相对寻址DS:000AHBBBAHBBBAHMOV AX, 03H BP DI 基址变址且相对寻址DS:0007HB8B7HB8B7HMOV AX, BP SI 基址变址寻址DS:0005HB6B5HB6B5HMOV
11、AX, BP+02H DI+03H 基址变址且相对寻址DS:0009HBAB9HBAB9HMOV AX, TABLE BP+02H DI+03H 基址变址且相对寻址DS:000DHAEADHAEADH五、问题讨论1.在上表中,分析AX推算值与实际值有何不同?找出错误原因,小结出各种寻址方式所用的段寄存器的规律来。答:推算值与实际值相同。第二次上机一、实验目的1.熟练掌握汇编语言程序设计的方法及上机步骤。2.掌握算术运算中,十进制数调整指令的应用。3.掌握子程序的设计方法。4.掌握DOS功能的调用方法。二、实验仪器586微机 1台三、实验内容1.编程要求与提示: 编写求十进制数02121424与
12、21736543之和的程序,并将和以十进制数的形式送屏幕显示。两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。和以压缩十进制数的形式存入SUM以下单元。将和送到屏幕显示部分功能的实现采用子程序的形式。2.实验步骤用全屏幕编辑软件建立源程序。用masm.exe汇编程序对源程序进行汇编,形成目标程序。用link.exe连接程序对目标程序进行连接形成可执行文件。用DEBUG对连接通过的可执行程序进行调试3.源代码STACK SEGMENT STACK DB 10H DUP(00)STACK ENDSDATA SEGMENT ADD1 DB 12H,67H,85H,32
13、H ADD2 DB 21H,73H,65H,43H SUM DB 4H DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AX,DATA MOV ES,AX MOV AX,STACK MOV SS,AX LEA SI,ADD13 LEA BX,ADD23 LEA DI,SUM3 MOV CX,4 CLCL1: MOV AL,SI ADC AL,BX DAA MOV DI,AL DEC SI DEC BX DEC DI LOOP L1 CALL DISPALEXI
14、TPROC: MOV AH,4CH MOV AH,1 INT 21HDISPAL PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI LEA DI,SUM MOV CX,4DISPAL2: MOV AL,DI SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 MOV AH,2 MOV DL,AL ADD DL,30H INT 21H MOV AL,DI AND AL,0FH MOV AH,2 MOV DL,AL ADD DL,30H INT 21H INC DI LOOP DISPAL2 POP DI POP DX POP
15、CX POP BX POP AX RET DISPAL ENDPCODE ENDS END START四、实验结果五、问题讨论1.在以十进制数形式参加运算的程序设计中,应注意那些问题。答:应注意进位和溢出。2.总结循环程序设计的步骤及方法。答:分析题目,画流程图,标出循环条件,写程序,检测循环能否进行。第三、四次上机一、实验目的1.增强和提高汇编语言程序设计的能力,掌握模块化程序设计的方法。2.熟练掌握DOS常用功能的调用方法。二、实验仪器586微机 一台三、实验内容1.编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为:按下“1
16、”键,完成字符串小写字母变成大写字母; 用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。 按下“2”键,完成找最大值(选择a); a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来。按下“3”键,完成排序(选择a); a.接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示。按下“4”键,显示时间; 首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),
17、然后,在屏幕上不断显示时间,格式为: XX(时): XX(分): XX(秒)最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。按下“5”键,结束程序运行,返回系统提示符。2.源代码STACK SEGMENT STACK STACK DB 256 DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENTTABLE DW G1, G2, G3, G4, G5 STRING0 DB My school ID is 13020310042.My name is Li HanBing.,0DH,0AH,$ STRING1 DB 1. Change small
18、 letters into capital letters of string;, 0DH, 0AH, $ STRING2 DB 2. Find the maximum of string;, 0DH, 0AH, $ STRING3 DB 3. Sort for datas;, 0DH, 0AH, $ STRING4 DB 4. Show Time;, 0DH, 0AH, $ STRING5 DB 5. Exit., 0DH, 0AH, $ STRINGN DB Input the number you select (1-5) : $ IN_STR DB Input the string (
19、including letters & numbers, less than 60 letters) :, 0DH, 0AH, $ PRESTR DB Original string : $ NEWSTR DB New string : $ OUT_STR DB The string is $ MAXCHR DB The maximum is $ IN_NUM DB Input the numbers (0 - 255, no more than 20 numbers) : , 0DH, 0AH, $ OUT_NUM DB Sorted numbers : , 0DH, 0AH, $ IN_T
20、IM DB Correct the time (HH:MM:SS) : $ HINTSTR DB Press ESC, go back to the menu; or press any key to play again!$ KEYBUF DB 61 DB ? DB 61 DUP (?) NUMBUF DB ? DB 20 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV SP, OFFSET
21、TOP MAIN: CALL FAR PTR MENU AGAIN: MOV AH, 2 MOV BH, 0 MOV DL, 41 MOV DH, 10 INT 10H MOV AH, 1 INT 21H CMP AL, 1 JB AGAIN CMP AL, 5 JA AGAIN SUB AL, 1 SHL AL, 1 CBW LEA BX, TABLE ADD BX, AX JMP WORD PTR BX G1: CALL FAR PTR CHGLTR MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G1 G2: CALL FAR PTR MAXLTR M
22、OV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G2 G3: CALL FAR PTR SORTNUM MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G3 G4: CALL FAR PTR TIMCHK MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G4 G5: MOV AH, 4CH INT 21H MENU PROC FARMOV AH, 0MOV AL, 3MOV BL, 0INT 10H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 5 INT 1
23、0H MOV AH, 9LEA DX, STRING0 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H MOV AH, 9 LEA DX, STRING1 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 7 INT 10H MOV AH, 9LEA DX, STRING2 INT 21H MOV AH, 2MOV DL, 5 MOV DH, 8 INT 10H MOV AH, 9LEA DX, STRING3INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 9 INT 10H MOV AH, 9 LEA
24、DX, STRING4INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 10 INT 10H MOV AH, 9 LEA DX, STRING5 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 11 INT 10H MOV AH, 9 LEA DX, STRINGN INT 21H RETMENU ENDP CHGLTR PROC FAR RECHG: MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10HMOV AH, 2MOV BH, 0 MOV DL, 5 MOV DH, 5 INT 10H MOV AH, 9 LEA D
25、X, IN_STR INT 21H MOV AH, 2 MOV DL, 5MOV DH, 6 INT 10HMOV AH, 0AH LEA DX, KEYBUF INT 21H CMP KEYBUF + 1, 0 JZ RECHG LEA BX, KEYBUF + 2 MOV AL, KEYBUF + 1 CBW MOV CX, AX ADD BX, AX MOV BYTE PTR BX, $ MOV AH, 2MOV BH, 0 MOV DL, 5 MOV DH, 7 INT 10H MOV AH, 9 LEA DX, PRESTR INT 21H MOV AH, 9 LEA DX, KEY
26、BUF + 2 INT 21H LEA BX, KEYBUF + 2 LCHG: CMP BYTE PTR BX, 61H JB NOCHG AND BYTE PTR BX, 0DFH NOCHG: INC BX LOOP LCHG MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 8 INT 10H MOV AH, 9 LEA DX, NEWSTR INT 21H MOV AH, 9 LEA DX, KEYBUF + 2INT 21H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 9 INT 10H MOV AH, 9 LEA DX,
27、HINTSTR INT 21H RET CHGLTR ENDP MAXLTR PROC FAR REMAX: MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 5 INT 10H MOV AH, 9 LEA DX, IN_STR INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H MOV AH, 0AH LEA DX, KEYBUF INT 21H CMP KEYBUF+1, 0 JZ REMAX LEA BX, KEYBUF+2 MOV AL, KEY
28、BUF+1 CBW MOV CX, AX ADD BX, AX MOV BYTE PTR BX, $ MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 7 INT 10H MOV AH, 9 LEA DX, OUT_STR INT 21H MOV AH, 9 LEA DX, KEYBUF+2 INT 21H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 8 INT 10H MOV AH, 9 LEA DX, MAXCHR INT 21H MOV DL, 0 LEA BX, KEYBUF+2 LCMP: CMP BX, DL JB NOLC
29、HG MOV DL, BX NOLCHG: INC BX LOOP LCMP MOV AH, 2 INT 21H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 9 INT 10H MOV AH, 9 LEA DX, HINTSTR INT 21H RET MAXLTR ENDP SORTNUM PROC FAR RESORT: MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 5 INT 10H MOV AH, 9 LEA DX, IN_NUM INT 21H M
30、OV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H MOV AH, 0AH LEA DX, KEYBUF INT 21H CALL CIN_INT CMP AL, 0JZ RESORT CMP NUMBUF, 0 JZ RESORT MOV AH, 2MOV BH, 0 MOV DL, 5 MOV DH, 7 INT 10H MOV AH, 9 LEA DX, OUT_NUM INT 21H MOV AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 8 INT 10H CALL FAR PTR MPSORT CALL FAR PTR INT_OUT MO
31、V AH, 2 MOV BH, 0 MOV DL, 5 MOV DH, 9 INT 10H MOV AH, 9 LEA DX, HINTSTRINT 21H RETSORTNUM ENDPCIN_INT PROC NEAR MOV CL, KEYBUF + 1 LEA SI, KEYBUF + 2 MOV CH, 0 MOV DH, 10 MOV AL, 0 MOV DL, 0 FNDNUM: CMP BYTE PTR SI, JZ ADDNUM MOV DL, 1 MUL DH XOR BH, BH MOV BL, SI ADD AX, BX SUB AX, 0 CMP AH, 0 JA ERRNUM JMP NEXT ADDNUM: CMP DL, 1 JNZ NEXT INC CH CALL ADDNEW MOV DL, 0 MOV AL, 0 NEXT: INC SI DEC CL CMP CL, 0 JNZ FNDNUM CMP DL, 1 JNZ