够坑的。。。。
16位汇编不能使用ax间址寻址,只有BX、BP、SI、DI才可以。32位程序才可以用任意32位寄存器间址寻址。
若代码排版问题请到源地址查看完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | DATAS SEGMENT ;此处输入数据段代码 MATCH DB 'Match$' NOMATCH DB 'NoMatch$' STRING1 DB 'asdsdasSSDA',0 STRING2 DB 'asdsasSSDA',0 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 LEA BX,STRING1 MOV AX,0 MOV DL,0 S1: INC AX INC BX CMP [BX],DL JNE S1 S2: LEA BX,STRING2 MOV CX,0 S3: INC CX INC BX CMP [BX],DL JNE S3 CMP AX,CX JNE SECOND ;MOV CX,7 LEA BX,STRING1 LEA BP,STRING2 MOV AL,[BP] L1: CMP AL,[BX] JNE SECOND INC BX INC BP MOV AL,[BP] LOOP L1 FIRST: MOV AH,09H MOV DX,OFFSET MATCH JMP NEXT SECOND: MOV AH,09H MOV DX,OFFSET NOMATCH NEXT: INT 21H MOV AH,4CH INT 21H CODES ENDS END START |
转载于:https://blog.51cto.com/darkscope/989026