回 帖 发 新 帖 刷新版面

主题:一道汇编题,急求解!!!

从键盘输入任意字符,要求在显示器上显示,并显示其ASCII值

回复列表 (共3个回复)

沙发

自己编写~可以参考一下~
KK   SEGMENT  STACK
      DW  32  DUP ()
KK   ENDS
DATA SEGMENT
CHAR  DB ?
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
     ASSUME CS:CODE,DS:DATA,SS:KK,ES:DATA
       MOV AX,DATA
       MOV DX,AX
       MOV ES,AX
  LOP: MOV AH,0        等待从键盘输入字符   
       INT 16H
       MOV CHAR,AL  将输入的字符保存到al中
       CMP CHAR,48
       JE EXIT      输入0则退出
       CMP CHAR,08H
       JE  BS       按backspace则删除刚刚输入的字符
       MOV AH,9
       MOV AL,CHAR  显示输入的字符
       MOV BH,0
       MOV BL,0EH
       MOV CX,1
       INT 10H
       MOV AH,3     初始化光标位置
       MOV BH,0
       INT 10H
       CMP DL,9     每输入十个字符换行
       JNB HH
       ADD DL,1     每输入一个字符列数加一
       MOV AH,2
       MOV BH,0
       INT 10H
       JMP LOP      重新输入
  HH:  MOV AH,0EH
       MOV AL,0AH
       INT 10H     
       SUB DL,9     重新设置光标位置
       MOV AH,2
       MOV BH,0
       INT 10H
       JMP LOP
EXIT:  MOV Ax,4C00H
       INT 21H
BS:    MOV AH,0EH      删除操作
       MOV CHAR,08H
       INT 10H
       MOV AH,3
       MOV BH,0
       INT 10H
THL:   MOV AH,6       清除刚刚输入的字符
       MOV AL,0
       MOV CH,DH
       MOV CL,DL
       INT 10H  
       JMP LOP
       MAIN ENDP
       CODE ENDS
       END MAIN

板凳

我也写了一个
data segment
     char db ?
     buf db 2 dup(?)
data ends
code segment
     assume ds:data,cs:code
stt:mov ax,data
     mov ds,ax
     
     mov ah,1
     int 21h
     mov char,al
     
     mov dl,0ah     回车换行
     mov ah,2
     int 21h
     mov dl,0dh
     mov ah,2
     int 21h
     
     mov cl,4       对高位进行处理
     mov dl,char
     shr dl,cl
     and dl,0fh
     or dl,30h
     mov ah,2
     int 21h
     
     mov dl,char     对低位进行处理
     and dl,0fh
     or dl,30h
     mov ah,2
     int 21h
     
     mov ah,4ch
     int 21h
code ends
     end stt

3 楼

谢谢各位高手的指点,但是老师要求要在150行以上呀,他说以下的不会很准确。由于我是初学者不太清楚,如果短一点也可以的话当然最好。希望各位高手能再帮帮忙呀,小的先谢谢了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册