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

来源:互联网 发布:无限网络 封优酷 编辑:程序博客网 时间:2024/05/16 05:23

上篇

显示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           ;返回DOSEND START

这里写图片描述
这里写图片描述
这里写图片描述

下篇 循环程序实验

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

流程图
这里写图片描述
这里写图片描述

CODE SEGMENT    ASSUME CS:CODESTART: 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 21HCODE ENDSEND START

测试
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

心得

发现 CMP BL,0DH 后必须要加H
在做实验时总是犯一些语法错误,比如总是把CMP BL,'z'写成CMP 'z'
先画好流程图的话写起来比较快,容易发现错误逻辑上的错误

0 0
原创粉丝点击