汇编--学习笔记(八)-字符输入、输出(1号、2号、循环)

来源:互联网 发布:yum 安装ant 编辑:程序博客网 时间:2024/06/05 09:21

一、字符的输入

1、方法
 01号DOS功能调用,用来从键盘输入一个字符的。即在本程序中需要输入一个字符的地方写上指令:

MOV AH,01HINT 21H

2、说明

  • (1)当CPU执行到这两条指令时,就等待你键入一个字符,当你键入一个字符后,这个字符的ASCII码就存放在AL寄存器中
  • (2)得到的是一个字符的ASCII码而非数字。假如你按数字键6,则在AL里得到的不是数值6,而是字符‘6’的ASCII码36H。

二、字符的输出

1、方法:02号DOS功能调用,用来在屏幕上显示一个字符。即在程序中需要显示一个字符的地方写上指令:

MOV DL,字符;指ASCII码,41H或‘A’MOV AH,02HINT 21H

2、说明:事先必须将要显示的字符的ASCII码送入到DL。


输入一串字符然后把字符倒序输出

DATAS SEGMENT  BUF DB 10 DUP(?)  ;先声明一个变量,10个字节DATAS ENDSCODES SEGMENT    ASSUME CS:CODES,DS:DATASSTART:    MOV AX,DATAS    MOV DS,AX    MOV CX,10         ;将计数值设为10用于循环获取字符    MOV SI,OFFSET BUF ;获取前面声明的变量的首地址,放到SI中去,BUF位移量=>SI READ:    MOV AH,01H        ;1号功能的,键入一个字符    INT 21H    MOV [SI],AL       ;1号功能获取的字符存放到AL中去了,所以    INC SI            ;自增1    LOOP READ         ;1号功能一次只能输入一个字符,所以使用循环输入一串字符    MOV CX,10         ;将计数值设为10用于循环显示字符    MOV SI,OFFSET BUF ;BUF位移量=>SIDISP:    MOV DL,[SI+9]     ;2号功能显示的字符将从DL中取,所以提前将数据放到DL中去([SI+9])=>DL,倒序显示    MOV AH,02H        ;2号功能,显示、输出一个字符    INT 21H    DEC SI            ;自减1    LOOP DISP         ;2号功能一次只能显示一个字符,所以使用循环显示一串字符    MOV AH,4CH    INT 21HCODES ENDS    END START