您的位置:首页 > 其它

汇编:输入一个字符,将其ASCII码加1后输出

2010-06-03 14:37 393 查看
汇编:输入一个字符,将其ASCII码加1后输出

1.功能:用DOS 功能调用实现I/O;
2.目的:掌握在PC 机上利用DOS 功能调用实现简单输入输出的基本方法;
3.内容:利用DOS 功能调用从键盘输入一个字符,将其ASCII 码加1 后在屏幕上显示;按ESC 键后返回DOS。

assume ds:data,cs:code
data segment
	State db '**************************************************',0dh,0ah
		  db '||     Print ASCII code+1 of any charactor      ||',0dh,0ah
		  db '||            By Zhong Dian #092978             ||',0dh,0ah
		  db '||         (Input button "Esc" to exit)         ||',0dh,0ah
		  db '**************************************************',0dh,0ah,'$'
	;已上是程序声明 
	Line1 db 'Please input a charactor:$'		;输出提示行
	NextLine db 0dh,0ah,'$'			;输出换行

data ends

code segment
start:
	mov ax, data
	mov ds,ax
	
	lea dx,State	;输出声明
	mov ah,09h
	int 21h
;----------------------------------------------------------------------------------
;============================ 将字符的ASCII码加1后循环输出 ========================
Input:				;进入循环
	lea dx,Line1	;输入提示行
	mov ah,09h
	int 21h
	
	mov ah,01h   	;DOS 1号功能调用,输入一个字符并回显
	int 21h
	
	and ax,00ffh    ;AX高位清零,为取法做准备
	inc ax			;ASCII码加1
  	mov cx,0		;cx清零,输出余数时作为循环结束标志
  	
  	push ax			;保存ax值,以调用09h中断输出换行
  	
  	lea dx,NextLine	;换行
	mov ah,09h
	int 21h
	
	pop ax			;返回ax值,转化为ASCII码输出
;------------------------------	
;1.判断,输入是Esc就退出程序
	mov bx,ax
	cmp bx,1ch		
	jz Exit
;---------------------------------------------------------------------	
;	算法分析:字符在内存中是以二进制的ASCII码形式存放的,这里用除法来
;实现二进制与十六进制的转换;余数存放在栈里,然后顺序出栈并输出,已达到
;倒序输出余数的目的
;---------------------------------------------------------------------	

;------------------------------	
;2.除法
	Divide:
		sub dx,dx    	;dx清零,余数压栈时它将作为媒介
		
  		cmp ax,10h    	;与十六相比较
  		jl  Last		;小于十六转入Last
  		
  		mov bx,10h		;16h做除数
  		div bx
  		push dx    		;存余数
  		inc cx    		;计算存入栈的数据个数
  		jmp Divide
  		
	Last:
		push ax    		;保存最后的余数
  		inc cx  

;------------------------------	 	
;输出	  
	Output:
		pop dx    		;余数出栈
  		add dx,30h    	;加30H转为ASCII码
  		mov ah,2    	;DOS 2号功能,显示中的内容
  		int 21h
  		loop Output		;循环,继续将余数出栈
  	
    	lea dx,NextLine	;换行
		mov ah,09h
		int 21h
  	
	loop Input			;循环,继续输入字符

Exit:	
	mov ax,4c00h	;回到DOS
	int 21h

code ends
end start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐