您的位置:首页 > 其它

实验二 分支程序实验和循环程序实验

2016-03-14 21:14 162 查看

上篇

显示AL中两位十六进制数程序

流程图



CODE SEGMENT        ;定义代码段
ASSUME CS:CODE  ;伪指令ASSUME将段CODE与段寄存器CS联系起来
START: MOV AL,3EH   ;定义程序的入口,把想要显示的数字移入AL寄存器
MOV BL,AL    ;将AL暂存在BL中,因为之后要改变AH中的内容
MOV DL,AL    ;DL用于显示字符
MOV CL,4     ;CL在位移指令中作位移次数计数器用 这里位移次数为4
SHR DL,CL    ;SHR指令将DL顺序CL寄存器指定的位数,把低位移出
CMP DL,9     ;将DL与9比较,如果小于等于9,则本身加30H即为对应的ASCII 码
JBE NEXT1    ;如果小于等于则跳转到NEXT1
ADD DL,7     ;如果大于9,本身加37H即为对应的ASCII 码
NEXT1: ADD DL,30H   ;
MOV AH,2     ;输出DL寄存器的字符到显示器
INT 21H      ;显示高位ASCII码
MOV DL,BL    ;
AND DL,0FH   ;将高位置零
CMP DL,9     ;
JBE NEXT2    ;
ADD DL,7     ;
NEXT2: ADD DL,30H   ;
MOV AH,2     ;
INT 21H      ;显示低位ASCII码
MOV AH,4CH   ;
INT 21H      ;
CODE ENDS           ;返回DOS
END START








下篇 循环程序实验

编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示'c';若是回车字符(其ASCII码为0DH),则自动结束程序,若为其它字符则不显示,循环等待新的字符输入。

流程图





CODE SEGMENT
ASSUME CS:CODE
START: MOV AH,1     ;等待输入字符
INT 21H
MOV BL,AL
CMP BL,0DH
JE  S        ;如果是回车则结束程序
CMP BL,'1'
JB START     ;如果是其他字符则等待继续输入
CMP BL,'9'
JBE NEXT2    ;如果是1-9则输出c
CMP BL,'A'
JB START     ;如果是其他字符则等待继续输入
CMP BL,'Z'
JBE NEXT2    ;如果是A-Z则输出c
CMP BL,'a'
JB START     ;如果是其他字符则等待继续输入
CMP BL,'z'
JBE NEXT2    ;如果是a-z则输出c
JMP START    ;如果是其他字符则等待继续输入
NEXT2: MOV DL,63H   ;显示c
MOV AH,2
INT 21H
S: MOV AH,4CH   ;返回dos
INT 21H
CODE ENDS
END START


测试









心得

发现 CMP BL,0DH 后必须要加H

在做实验时总是犯一些语法错误,比如总是把
CMP BL,'z'
写成
CMP 'z'


先画好流程图的话写起来比较快,容易发现错误逻辑上的错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: