汇编实验:字符转ASCII码

题目

循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。

算法流程图

本题的核心在于如何将字符转成其对应的ASCII码

代码

data segment
data ends

code segment
	      assume ds:data, cs:code
	start:
	      mov    ax, data
	      mov    ds, ax
	p3:
		  mov    ah, 01h
		  int    21h
		  cmp    al, 'q'
		  je     over
		  cmp    al, 'Q'
		  je     over
		  mov    dh, 02h   ; 循环次数,循环两次,分别取高四位和低四位
		  mov    dl, al
		  mov    ch, al ; 将值暂存到dl和ch
          mov    cl, 04h
	      shr    dl, cl    ; 取高四位              
	l2:   
	      cmp    dl, 0ah
	      jb     f2
	      add    dl, 07h                	
	f2:   
	      add    dl, 30h                
	      mov    ah, 02h
	      int    21h
	      dec    dh
	      mov    dl, ch
	      and    dl, 0fh  ; 取低字节          
	      cmp    dh, 0h ; 是否取了低四位
	      ja     l2  
	      mov    ah, 02h
	      mov    dl, 0ah  ; 换行,为了美观
	      int    21h
		  loop   p3  ; 循环输入,直到遇到q或Q
	over:	  
		  mov    ah, 08h   ; 结束时停留
		  int    21h
		  mov    ah, 4ch
		  int    21h
code ends
end start