1、START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF1 MOV DI,OFFSET BUF2 MOV AH,BX OR AH,AH JZ ZERO JL MINUS MOV AH,01H JMP ASSIGNZERO: MOV AH,00HMINUS: MOV AH,0FFHASSIGN: MOV DI,AH MOV AH,4CH INT 21HPROGRAM ENDS END START文件名.ASM 对源程序进行汇编,根据提示输入三次文件名,分别得到目标代码文件:文件名.OBJ ;列表清单文件:文件名.LST和交叉参考文件:文件名.CRF。如果出错重
2、新汇编。直到显示0 warning errors0 sevier errors Microsoft (R) Macro Assembler Version 11/7/13 18:11:31 Page 1-1 1 0000 DATA SEGMENT 2 0000 36 BUF1 DB 036H 3 0001 ? BUF2 DB ? 4 0002 DATA ENDS 5 0000 PROGRAM SEGMENT 6 ASSUME CS:DATA 7 0000 B8 - R START: MOV AX,DATA 8 0003 8E D8 MOV DS,AX 9 0005 BB 0000 R MOV
3、BX,OFFSET BUF1 10 0008 BF 0001 R MOV DI,OFFSET BUF2 11 000B 8A 27 MOV AH,BX 12 000D 0A E4 OR AH,AH 13 000F 74 07 JZ ZERO 14 0011 7C 0A JL MINUS 15 0013 B4 01 MOV AH,01H 16 0015 EB 08 90 JMP ASSIGN 17 0018 B4 00 ZERO: MOV AH,00H 18 001A EB 03 90 JMP ASSIGN 19 001D B4 FF MINUS: MOV AH,0FFH 20 001F 88
4、25 ASSIGN: MOV DI,AH 21 0021 B4 4C MOV AH,4CH 22 0023 CD 21 INT 21H 23 0025 PROGRAM ENDS 24 END START Symbols-1Segments and Groups: N a m e Length Align Combine ClassDATA . . . . . . . . . . . . . . 0002 PARA NONE PROGRAM . . . . . . . . . . . . 0025 PARA NONE Symbols: N a m e Type Value AttrASSIGN
5、. . . . . . . . . . . . . L NEAR 001F PROGRAMBUF1 . . . . . . . . . . . . . . L BYTE 0000 DATABUF2 . . . . . . . . . . . . . . L BYTE 0001 DATAMINUS . . . . . . . . . . . . . L NEAR 001D PROGRAMSTART . . . . . . . . . . . . . L NEAR 0000 PROGRAMZERO . . . . . . . . . . . . . . L NEAR 0018 PROGRAMFIL
6、ENAME . . . . . . . . . . . TEXT XR 24 Source Lines 24 Total Lines 10 Symbols 49212 + 399844 Bytes symbol space free 0 Warning Errors 0 Severe Errors 文件名.OBJ 连接系统与目标文件,得到可执行文件:文件名.EXE;和列表文件:文件名.MAP。通常不要选择连接库文件,直接回车即可。LINK : warning L4021: no stack segment Start Stop Length Name Class 00000H 00001H 0
7、0002H DATA 00010H 00034H 00025H PROGRAM Program entry point at 0001:00004.调试过程:F:DEBUG MASM5文件名.EXE -U 01435:0000 B83414 MOV AX,1434 0003 8ED8 MOV DS,AX 0005 BB0000 MOV BX,0000 0008 BF0100 MOV DI,0001 000B 8A27 MOV AH,BX 000D 0AE4 OR AH,AH 000F 7407 JZ 0018 0011 7C0A JL 001D 0013 B401 MOV AH,01 0015
8、 EB08 JMP 001F 0017 90 NOP 0018 B400 MOV AH,00 001A EB03 JMP 001F 001C 90 NOP 001D B4FF MOV AH,FF 001F 8825 MOV DI,AH -U0021 B44C MOV AH,4C 0023 CD21 INT 21 0025 4D DEC BP 0026 FF8B5EFE DEC WORD PTR BP+DI+FE5E 002A 894710 MOV BX+10,AX 002D E94701 JMP 0177 0030 FF7404 PUSH SI+04 0033 E83EFF CALL FF74
9、 0036 894510 MOV DI+10,AX 0039 E93B01 JMP 0177 003C 8B5EFE MOV BX,BP-02 003F 8B05 MOV AX,DI -G=0 21AX=0134 BX=0000 CX=0035 DX=0000 SP=0000 BP=0000 SI=0000 DI=0001 DS=1434 ES=1424 SS=1434 CS=1435 IP=0021 NV UP EI PL NZ NA PE NC -D DS:1434:0000 36 01 00 00 00 00 00 00-00 00 00 00 00 00 00 00 6.0010 B8
10、 34 14 8E D8 BB 00 00-BF 01 00 8A 27 0A E4 74 .4.t0020 07 7C 0A B4 01 EB 08 90-B4 00 EB 03 90 B4 FF 88 .|.0030 25 B4 4C CD 21 4D FF 8B-5E FE 89 47 10 E9 47 01 %.L.!M.G.G.0040 FF 74 04 E8 3E FF 89 45-10 E9 3B 01 8B 5E FE 8B .t.E.;.0050 05 8B 55 02 39 57 02 75-07 39 07 75 03 E9 27 01 .0060 B8 20 00 E9
11、 D0 00 80 7C-06 00 75 11 8B 5E FE 8B . .|.u.0070 47 08 0B 47 0A 74 06 80-7F 1D 08 75 1B 8B 5E FE G.u.-Q实验二 汇编语言程序设计调试1.EDIT 文件名.ASM 程序功能:进行各分数段的人数统计结果是 :01 00 02 00 01 00-03 00 01 00 01 00DATAREA SEGMENT GRADE DW 56,69,84,82,73,88,99,63,100 N EQU ($-GRADE)/2 ;统计GRADE中有多少个成绩 S5 DW 0 ;表示“低于60分”的人数 S6
12、DW 0 ;表示“6069分”的人数 S7 DW 0 ;表示“7079分”的人数 S8 DW 0 ;表示“80-89分”的人数 S9 DW 0 ;表示“90-99分”的人数 S10 DW 0 ;表示“100分”的人数 DATAREA ENDSPROGRAM SEGMENT MAIN PROC FARDATAREA PUSH DS SUB AX,AX ;将AX清零 PUSH AX MOV AX,DATAREA ;吧DATAREA的地址富裕 AX MOV CX,N ;循环次数 MOV BX,OFFSET GRADE ;设置BX为指向GRADE的地址指针COMPARE: MOV AX, BX ;取G
13、RADE中某一个成绩,判断是哪个级别 CMP AX,60 ;转到相应的程序段执行 JL FIVE CMP AX,70 JL SIX CMP AX,80 JL SEVEN CMP AX,90 JL EIGHT CMP AX,100 JNE NINE INC S10 JMP SHORT CHANGENINE: INC S9 ;转到某个等级后,该等级的计数值加1 EIGHT: INC S8 SEVEN: INC S7 SIX: INC S6 FIVE: INC S5CHANGE:ADD BX,2 ;修改GRADE的地址指针,指向下一个成绩 LOOP COMPARE RET MAIN ENDP PRO
14、GRAM ENDSMicrosoft (R) Macro Assembler Version 11/7/13 22:54:45 1 0000 DATAREA SEGMENT 2 0000 0038 0045 0054 0052 GRADE DW 56,69,84,82,73,88,99,6 3,100 3 0049 0058 0063 003F 4 0064 5 = 0009 N EQU ($-GRADE)/2 ;统计GRA DE中有多少个成绩 6 0012 0000 S5 DW 0 ;表示“低于60分”? 娜耸? 7 0014 0000 S6 DW 0 ;表示“6069分”? 8 0016
15、0000 S7 DW 0 ;表示“7079分”? 9 0018 0000 S8 DW 0 ;表示“80-89分”的 人数 10 001A 0000 S9 DW 0 ;表示“90-99分”的 11 001C 0000 S10 DW 0 ;表示“100分”的人 数 12 001E DATAREA ENDS 13 0000 PROGRAM SEGMENT 14 0000 MAIN PROC FAR 15 ASSUME CS:DATAREA 16 17 18 0000 1E START: PUSH DS 19 0001 2B C0 SUB AX,AX ;将AX清零 20 0003 50 PUSH AX
16、 21 0004 B8 - R MOV AX,DATAREA ;吧DATAREA的地 址富裕 AX 22 0007 8E D8 MOV DS,AX 23 0009 B9 0009 MOV CX,N ;循环次数 24 000C BB 0000 R MOV BX,OFFSET GRADE ;设置BX为指 向GRADE的地址指针 25 26 27 000F 8B 07 COMPARE:取G RADE中某一个成绩,判断是哪个级别 28 0011 3D 003C CMP AX,60 ;转? 较嘤某绦蚨沃葱? 29 0014 7C 32 JL FIVE 30 0016 3D 0046 CMP AX,70
17、31 0019 7C 27 JL SIX 32 001B 3D 0050 CMP AX,80 33 001E 7C 1C JL SEVEN 34 0020 3D 005A CMP AX,90 35 0023 7C 11 JL EIGHT 36 0025 3D 0064 CMP AX,100 37 0028 75 06 JNE NINE 38 002A FF 06 001C R INC S10 39 002E EB 1C JMP SHORT CHANGE 40 0030 FF 06 001A R NINE:转到某个等 级后,该等级的计数值加1 Page 1-2 41 0034 EB 16 JMP
18、 SHORT CHANGE 42 0036 FF 06 0018 R EIGHT: INC S8 43 003A EB 10 JMP SHORT CHANGE 44 003C FF 06 0016 R SEVEN: INC S7 45 0040 EB 0A JMP SHORT CHANGE 46 0042 FF 06 0014 R SIX: INC S6 47 0046 EB 04 JMP SHORT CHANGE 48 0048 FF 06 0012 R FIVE: INC S5 49 004C 83 C3 02 CHANGE:修改GRADE的地址 指针,指向下一个成绩 50 004F E2
19、 BE LOOP COMPARE 51 52 53 0051 CB RET 54 0052 MAIN ENDP 55 0052 PROGRAM ENDS 56 END START DATAREA . . . . . . . . . . . . 001E PARA NONE PROGRAM . . . . . . . . . . . . 0052 PARA NONE CHANGE . . . . . . . . . . . . . L NEAR 004C PROGRAMCOMPARE . . . . . . . . . . . . L NEAR 000F PROGRAMEIGHT . . . .
20、 . . . . . . . . . L NEAR 0036 PROGRAMFIVE . . . . . . . . . . . . . . L NEAR 0048 PROGRAMGRADE . . . . . . . . . . . . . L WORD 0000 DATAREAMAIN . . . . . . . . . . . . . . F PROC 0000 PROGRAM Length = 0052N . . . . . . . . . . . . . . . NUMBER 0009 NINE . . . . . . . . . . . . . . L NEAR 0030 PROG
21、RAMS10 . . . . . . . . . . . . . . L WORD 001C DATAREAS5 . . . . . . . . . . . . . . . L WORD 0012 DATAREAS6 . . . . . . . . . . . . . . . L WORD 0014 DATAREAS7 . . . . . . . . . . . . . . . L WORD 0016 DATAREAS8 . . . . . . . . . . . . . . . L WORD 0018 DATAREAS9 . . . . . . . . . . . . . . . L WOR
22、D 001A DATAREASEVEN . . . . . . . . . . . . . L NEAR 003C PROGRAMSIX . . . . . . . . . . . . . . L NEAR 0042 PROGRAM 54 Source Lines 54 Total Lines 21 Symbols 49174 + 399914 Bytes symbol space free 00000H 0001DH 0001EH DATAREA 00020H 00071H 00052H PROGRAM Program entry point at 0002:-U 00000 1E PUSH DS 0001 2BC0 SUB AX,AX 0003 50 PUSH AX 0004 B83214 MOV AX,1432 0007 8ED8 MOV DS,AX 0009 B90900 MOV CX,0009 000C BB0000 MOV BX,0000 000F 8B07 MOV AX,BX 0011 3D3C00 CMP AX,003C 0014 7C32 JL 0048 0016 3D4600 CMP AX,0046 0019 7C27 JL 0042 001B 3D5000 CM
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1