汇编语言学习 字符串输出

时间:2022-05-14 00:55:29

                                                   字符串输出

字符串操作程序设计:

对于一个汇编程序 : 有三段  数据段  堆栈段 代码段 

                    初始化程序:

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