微机实验二

1BUF单元开始存有一字符串(长度<255),编程实现统计该字符串中的ASCII42H45H之间的字符个数,并将统计结果以二进制形式显示在屏幕
.486  
DATA SEGMENT USE16  
BUF DB 'ABCD'  

COUNT EQU $-BUF  
DATA ENDS  
  
CODE SEGMENT USE16  
ASSUME CS:CODE,DS:DATA  
  
BEG:  
    MOV AX,DATA  
    MOV DS,AX  
      
    MOV BL,0    ;计数  
    MOV SI,0  
    MOV CX,COUNT  
AGA:  
    CMP BUF[SI],42H  
    JB LAST    ;低于转移  
    CMP BUF[SI],45H  
    JA LAST    ;高于转移  
    INC BL  
LAST:  
    INC SI  
    LOOP AGA  
    MOV CX,8  
M2:  
      
    TEST BL,80H  
    JNZ M3  
    MOV DL,'0'  
    MOV AH,02H  
    INT 21H  
    JMP M4  
M3:  
    MOV DL,'1'  
    MOV AH,02H  
    INT 21H  
M4:  
    SHL BL,1  
    LOOP M2  
      
    MOV AH,4CH  
    INT 21H  
CODE ENDS  
    END BEG  



2用户登录验证程序的实现
程序执行后,给出提示操作,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名,密码字符串和程序内定的字符串相同时,显示欢迎界面并返回DOS;否则给出提示信息,用户名或密码错误,再次输入。界面颜色自定(彩色或黑白)

  

.486

        DATA  SEGMENT   USE16

       _NAME  DB        NAME - 1, '1511','$'

   _PASSWORD  DB       PASSWORD - 1, '1212', '$'

    BUF_NAME  DB        30

              DB        ?

              DB        30 DUP(?)

            BUF_PASSWORD  DB        30

              DB        ?

              DB        30 DUP(?)

扫描二维码关注公众号,回复: 1019225 查看本文章

       MESG1  DB        'PLEASE INPUTE YOUR NAME: ', '$'

       MESG2  DB        'PLEASE INPUTE YOUR PASSWORD: ', '$'

 

          OK  DB        0DH, 0AH, '----  WELLCOME  ---- ', 0DH, 0AH, '$'

          NO  DB        0DH, 0AH, 'USERNAME OR PASSWORD ERROR!', 0DH, 0AH, '$'

        DATA  ENDS

 

        CODE  SEGMENT   USE16

              ASSUME    CS:CODE, DS:DATA

        BEG:  MOV       AX, DATA

              MOV       DS, AX

              MOV       SS, AX

              MOV       SP, 0

;GET NAME

      AGAIN:  MOV       AH, 9

              MOV       DX, OFFSET MESG1

              INT       21H

              MOV       AH, 0AH

              MOV       DX, OFFSET BUF_NAME

              INT       21H

              MOV       BL, BUF_NAME+1

              MOV       BH, 0

              INC       BYTE PTR BUF_NAME+1

              MOV       SI, OFFSET BUF_NAME + 2

              MOV       BYTE PTR [BX+SI], '$'

; LINE BREAK

              MOV       AH, 02H

              MOV       DL, 0AH

              INT       21H

;GET PASSWORD

              MOV       AH, 9

              MOV       DX, OFFSET MESG2

              INT       21H

              MOV       DI, 0

              MOV       BX, OFFSET BUF_PASSWORD + 2

          S:  MOV       AH,08H

              INT       21H

      

              MOV       BYTE PTR [BX + DI], AL

              INC       DI

              CMP       AL, 0DH

              JNZ       S

               

              MOV       AX, DI

              MOV       BYTE PTR BUF_PASSWORD + 1, AL

              MOV       BYTE PTR [BX +DI], '$'

 

    

              CALL      CHECK

              CMP       AX, 0

              JZ        AGAIN

              MOV       AH, 4CH

              INT       21H

       CHECK  PROC

              MOV       SI, OFFSET _NAME

              MOV       DI, OFFSET BUF_NAME + 1

              MOV       CX, [SI]

              MOV       CH, 00H

         S0:  MOV       AL, [SI]

              CMP       AL, [DI]

              JNZ       ERROR

              INC       SI

              INC       DI

              LOOP      S0

              MOV       SI, OFFSET _PASSWORD

              MOV       DI, OFFSET BUF_PASSWORD + 1

              MOV       CX, [SI]

              MOV       CH, 00H

         S1:  MOV       AL, [SI]

              CMP       AL, [DI]

              JNZ       ERROR

              INC       SI

              INC       DI

              LOOP      S1

              MOV       AH, 9

              MOV       DX, OFFSET OK

              INT       21H

              MOV       AX, 1

              JMP       OVER

      ERROR:  MOV       AH, 9

              MOV       DX, OFFSET NO

              INT       21H

              MOV       AX, 0

       OVER:  RET

       CHECK  ENDP

        CODE  ENDS

              END       BEG



猜你喜欢

转载自blog.csdn.net/cheng__lu/article/details/78985954