字符串输出
字符串操作程序设计:
对于一个汇编程序 : 有三段 数据段 堆栈段 代码段
初始化程序:
MOV AX ,DATAS
MOV DS, AX
为什么需要这个 ,主要是因为 mov 无法实现将立即数传入段寄存器 ,但是 MOV可以将立即数 传入通用寄存器
很多时候要多问为什么 ,我一直认为 只有可以被解释 ,可以被证明的东西 才是对的东西 否则一切都市值得怀疑的
汇编语言程序中 数据的输入时以字符形式的 0~ 9 输入时对应的 ASCII 减掉 30H 存入主存中的 输出时是加上 30H
输出子外设上的 比如十六进制 A 主存中是 0AH 加上 37H 变成
41H 因为主存中存的就是 41H 因此可以直接输出带外设上。。。。
现在介绍 21H 软终止操作 的基本功能模块
1、从键盘上输入一个字符
AH = 01H AL = 输入字符的ASCII 码值
栗子:
MOV AH ,01H
INT 21H
2 、向显示器 输出一个字符
入口参数 AH = 02H, DL = '欲输出的字符串码‘
栗子:
MOV DL ,'C'
MOV AH , 02H
INT 21H
3 、 向显示器 输出一个字符串
AH = 09H
DS = 欲输出字符串的段地址 DX = 欲输出字符串的 偏移地址
MOV DX , OFFSET STRING
MOV AH, 09H;
INT 21H
现在给出 完整代码:
DATAS SEGMENT
STRING DB 'HELLO WORLD!';数据段
DATAS ENDS
STACKS SEGMENT
DW 256 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX ,DATAS
MOV DS, AX ;这里开始初始化
;此处输入代码段代码
MOV DX, OFFSET STRING
MOV AH ,09H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START