汇编输入输出,ah调用例子
Posted Afololer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编输入输出,ah调用例子相关的知识,希望对你有一定的参考价值。
单字符的输入输出
输入调用
mov ah,1
功能为输入一个字符,这个字符存在al中,输入多个字符时也可以这样
L1:
mov ah,1
int 21H
cmp al,10 ;换行
JZ exit
JMP L1
输出调用
mov ah,2
把将输出的字符送到dl,然后调用输出
例题
输入一个字符,如果是y,n则输出,是其他则重新输入
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
L1:
mov AH,1
INT 21H
CMP al,'y'
jz yes
cmp al,'n'
jz no
jmp L1
yes:
mov dl,'y'
mov ah,2
int 21H
jmp EX
no:
mov dl,'n'
mov ah,2
int 21H
;此处输入代码段代码
EX:
MOV AH,4CH
INT 21H
CODES ENDS
END START
字符串的输入输出
输入调用
mov ah,10
使用说明
预先把存储器的地址送到dx寄存器,输入后,地址+1为实际输入字符数,地址+2是输入字符串开始的地址,一般这样搭配
string db 40,?,40 dup(?)
lea dx,string
mov ah,10
int 21H
输出调用
mov ah,9
使用说明
输出字符串的首地址送到dx,输出的最后必须要有$符号
例题
比较两个输入字符串是否相等
DATAS SEGMENT
;此处输入数据段代码
s1 db 100,?,100 dup(?)
s2 db 100,?,100 dup(?)
crlf db 10,13,'$'
eqq db 'EQ','$'
neq db 'neq','$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea dx,s1
mov ah,10
int 21H
lea dx,crlf
mov ah,9
int 21H
lea dx,s2
mov ah,10
int 21H
lea dx,crlf
mov ah,9
int 21H
mov al,s1+1
mov dl,s2+1
cmp al,dl
jnz neqq
xor ch,ch
mov cl,s1+1
mov bx,2
L1:
mov al,s1[bx]
mov dl,s2[bx]
;cmp s1+bx,s2+bx
cmp al,dl
lea dx,crlf
mov ah,9
int 21H
jnz neqq
inc bx
loop L1
lea dx,eqq
mov ah,9
int 21H
jmp nd
neqq:
lea dx,neq
mov ah,9
int 21H
;此处输入代码段代码
nd:
MOV AH,4CH
INT 21H
CODES ENDS
END START
以上是关于汇编输入输出,ah调用例子的主要内容,如果未能解决你的问题,请参考以下文章