【西南科技大学汇编程序】简单分支结构程序实验

五、简单分支结构程序实验

5.1 实验类型
  实验类型:设计型
5.2 实验目的
   1.掌握条件转移指令的使用方法;
   2.掌握指令对标志寄存器中各标志位的影响情况;
   3.掌握标志位和转移指令之间的关系;
   4.初步掌握利用设置断点调试程序的方法.
5.3实验内容
   1. 编写一个程序,显示AL寄存器中的两位十六进制数
   2. 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
5.4 实验要求
   1.仔细阅读汇编语言教材相关内容。
   2.熟练掌握DEBUG中的G命令。
   3.在DEBUG下执行程序,利用跟踪命令检查指令对标志位的影响情况。
   4.掌握对INT指令的跟踪方法。
5.5实验结果
   1.第一个程序,显示AL寄存器中的两位十六进制数,这里在AL中写入的是3EH。
流程图:
在这里插入图片描述

代码:

DATA SEGMENT
datain db 10 dup(0)

DATA ENDS
STACK SEGMENT PARA  STACK
  BUF DW 20H DUP (0)
  LEN EQU $-BUF
STACK ENDS
CODE SEGMENT        ;定义代码段
    ASSUME CS:CODE,SS:STACK,DS:DATA  
START: 
       MOV AX,DATA
	   MOV DS,AX
	   MOV AX,STACK
	   MOV SS,AX
	   
	   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 S1    ;如果小于等于则跳转到S1
       ADD DL,7     ;如果大于9,本身加37H即为对应的ASCII 码
S1:
       ADD DL,30H   ;
       MOV AH,2     ;输出DL寄存器的字符到显示器
       INT 21H      ;显示高位ASCII码
       MOV DL,BL    ;
       AND DL,0FH   ;将高位置零
       CMP DL,9     ;
       JBE S2    ;
       ADD DL,7     ;
S2:
       ADD DL,30H   ;
       MOV AH,2     ;
       INT 21H      ;显示低位ASCII码
       MOV AH,4CH   ;
       INT 21H      ;
CODE ENDS           ;返回DOS
END START

运行截图:
在这里插入图片描述

   2.第二个程序程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
流程图:
在这里插入图片描述

代码:

DATA SEGMENT
	ms_input db 'Please input a char:','$'
	ms_output db 'output:','$'
DATA ENDS
STACK SEGMENT PARA  STACK	
  BUF DW 20H DUP (0)
  LEN EQU $-BUF
STACK ENDS
CODE SEGMENT        ;定义代码段
    ASSUME CS:CODE,SS:STACK,DS:DATA   
START:
       MOV AX,DATA
	   MOV DS,AX
	   MOV AX,STACK
	   MOV SS,AX
	   
	   CALL DISP_HUI
	   MOV DX,OFFSET MS_INPUT  ;取显示字符串首地址
       MOV AH,9
       INT 21H
	   CALL DISP_HUI
	   
  	   MOV AH,1     ;等待输入字符
       INT 21H
       MOV BL,AL
       CMP BL,0DH  

       JE  S        ;如果是回车则结束程序
	   
	   
       CMP BL,'1'
       JB START     ;如果是其他字符则等待继续输入
       CMP BL,'9'
       JBE NEXT1    ;如果是1-9则输出这个数
       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    ;如果是其他字符则等待继续输入
NEXT1:
       CALL DISP_HUI
	   MOV DX,OFFSET ms_output  ;取显示字符串首地址
       MOV AH,9
       INT 21H
	   CALL DISP_HUI	
	   
       MOV DL,BL     ;显示这个数
	   MOV AH,2
       INT 21H
	   CALL S
NEXT2:
       CALL DISP_HUI
	   MOV DX,OFFSET ms_output  ;取显示字符串首地址
       MOV AH,9
       INT 21H
	   CALL DISP_HUI	
	   
       MOV DL,63H   ;显示c
       MOV AH,2
       INT 21H
S: 
       MOV AH,4CH   
       INT 21H      ;返回

DISP_HUI:    ;入口参数DL,回车
	   PUSHF       ;标志位入栈 
	   PUSH AX
	   PUSH DX  
	   MOV DL,0DH
	   MOV AH,02H
	   INT 21H
	   MOV DL,0AH
	   MOV AH,02H
	   INT 21H
	   POP DX
	   POP AX
	   POPF 
RET
CODE ENDS
END START

运行截图:
输入其他字符,等待输入
在这里插入图片描述

输入1-9,则显示
在这里插入图片描述

输入若为A-Z或a-z字符,均显示“c”
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值