最近正在做汇编实验,突然感觉其实汇编还是蛮有意思的。所以记录一下自己做第一次的总结。
1. mov ah,01h
int 21h
(1)首先这是一条DOS系统功能调用,把01h赋值给ah,再调用程序入口:int 21h,那么就可以让用户输入字符!
并且用户输入的字符保存在al里。
(2)用户输入的是十进制数,但保存在系统里的是ASCII的十六进制数的数字,比如4就是34h,所以要加入:
sub al, 30h
(3)同时ptr只可用于存储器的数,不能用于寄存器的转换:
A DW 0
mov ah,0
sub al, 30h
mov A,ax
mov cx, word ptr A
如果此处直接这样:
mov cx, word ptr al
因为寄存器在CPU中位数早就已经定好了,而存储器中就可以变换自如些
(4)回车
mov dl,0dh
mov ah,2
int 21h
在DOS中
mov ah,2 表示的是显示输出,而它需要调用参数 DL=输出字符
而把0dh赋值给dl就可以
(5)换行
mov dl,0ah
mov ah,2
int 21h
同上
(6)汇编如果直接输入中文显示的是乱码!(并不支持中文!!)
HeadSentence1 db "请输入您想显示感叹号的次数: "; 此处输入数据段代码
HeadSentence2 db "(整数)$"
回车 \r 本义是光标重新回到本行开头,r的英文return,
换行 \n 本义是光标往下一行(不一定到下一行行首)
mo
mov
ah, 01h
int 21h