⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t4-4.asm

📁 上课时老师讲的一些经典的例子;错过了就太可惜了呀
💻 ASM
字号:
MLENGTH=128          ;缓冲区常长度
DSEG SEGMENT
BUFF  DB MLENGTH  ;按0A号功能设置
      DB ?                       ;实际键入的字符数
      DB MLENGTH DUP (0)
MESS0 DB 'Please input:$'
MESS1 DB 'Length = $'
MESS2 DB 'X = $'
MESS3 DB 'Y = $'
DSEG ENDS
;
CSEG SEGMENT
     ASSUME CS:CSEG,DS:DSEG
START:
     MOV AX,DSEG
     MOV DS,AX
     MOV DX,OFFSET MESS0
     CALL DISPMESS     ;显示Please input:

     MOV DX,OFFSET BUFF
     MOV AH,10
     INT 21H
     CALL NEWLINE

     MOV BH,0   ;清数字符计数器
     MOV BL,0   ;清字母符计数器
     MOV CL,BUFF+1  ;取字符串长度
     MOV CH,0
     JCXZ COK     ;字符串长度=0,退出。

     MOV SI,OFFSET BUFF+2   ;指向字符串首地址

AGAIN:
     MOV AL,[SI]   ;取一个字符
     INC SI
     CMP AL,'0'
     JB NEXT
     CMP AL,'9'
     JA NODEC
     INC BH           ;数字符计数器+1
     JMP SHORT NEXT
NODEC:
     OR AL,20H    ;大转小,统一带大小写。
     CMP AL,'a'
     JB NEXT
     CMP AL,'z'
     JA NEXT
     INC BL           ;字母符计数器+1
NEXT:
     LOOP AGAIN
;
COK:
     MOV DX,OFFSET MESS1
     CALL DISPMESS         ;显示"Length="
     MOV AL,BUFF+1         ;取字符串长度
     XOR AH,AH
     CALL DISPAL              ;显示字符串长度
     CALL NEWLINE          ;显示回车换行
;
     MOV DX,OFFSET MESS2
     CALL DISPMESS         ;显示"X="
     MOV AL,BH
     XOR AH,AH
     CALL DISPAL              ;显示数字符个数
     CALL NEWLINE
;
     MOV DX,OFFSET MESS3
     CALL DISPMESS         ;显示"Y="
     MOV AL,BL
     XOR AH,AH
     CALL DISPAL              ;显示字母符个数
     CALL NEWLINE
;
     MOV AX,4C00H
     INT 21H
;
;显示AL寄存器中的数字
DISPAL PROC
     MOV CX,3
     MOV DL,10
DISP1:
     DIV DL
     XCHG AH,AL
     ADD AL,'0'
     PUSH AX
     XCHG AH,AL
     MOV AH,0
     LOOP DISP1
     MOV CX,3
DISP2:
     POP DX
     CALL ECHOCH
     LOOP DISP2
     RET
DISPAL ENDP
;
;显示DS:DX处的字符串
DISPMESS PROC
     MOV AH,9
     INT 21H
     RET
DISPMESS ENDP
;
;显示AL中的ASCII码
ECHOCH PROC
     MOV AH,2
     INT 21H
     RET
ECHOCH ENDP
;
;输出回车换行符
newline proc
     push ax
     push dx
     mov dl,0dh
     mov ah,2
     int 21h
     mov dl,0ah
     mov ah,2
     int 21h
     pop dx
     pop ax
     ret
newline endp

CSEG ENDS
END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -