微机实验二——分支程序设计

微机实验二——分支程序设计

复习

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

一、实验题目

用地址表法完成下面要求的多路分支程序的设计。根据MODE单元中的模式字(0~7)分别转向L0、L1…L7标号处执行。L0、L1…L7程序段中分别实现显示’0’~’7’字符。(提示:可用DOS系统功能调用INT 21H)。

二、代码

//逻辑分解法
DATAS SEGMENT
MODE DB 7//数据段定义字节变量MODE为0
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS//CODES部分代码和CS寄存器对应,DATAS的(数据)和DS寄存器对应

START:
MOV AX,DATAS
MOV DS,AX
MOV AL,MODE

CMP AL,0//cmp指令比较两个操作数,它影响flag的CF等 ZF零标志位:若当前的运算结果为零,则ZF为1,否则为0。
JZ LO//条件跳转指令JZ,等于跳转,ZF=1,转到指定地址执行
CMP AL,1
JZ L1
CMP AL,2
JZ L2
CMP AL,3
JZ L3
CMP AL,4
JZ L4
CMP AL,5
JZ L5
CMP AL,6
JZ L6
CMP AL,7
JZ L7


LO:MOV DL,'0'
MOV AH,02H//放2,是2号功能,字符输出,并且要输出的字符是已经放在dl里面的
INT 21H
JMP L8

L1:MOV DL,'1'
MOV AH,02H
INT 21H
JMP L8

L2:MOV DL,'2'
MOV AH,02H
INT 21H
JMP L8

L3:MOV DL,'3'
MOV AH,02H
INT 21H
JMP L8

L4:MOV DL,'4'
MOV AH,02H
INT 21H
JMP L8

L5:MOV DL,'5'
MOV AH,02H
INT 21H
JMP L8

L6:MOV DL,'6'
MOV AH,02H
INT 21H
JMP L8

L7:MOV DL,'7'
MOV AH,02H
INT 21H
JMP L8

L8:MOV AH,4CH
INT 21H//调用DOS中的子程序。当MOV AH,4CH,就是结束本程序,返回DOS操作系统
CODES ENDS
END START

LEA指令的功能是取偏移地址,例如LEA AX,[1000H],作用是将源操作数[1000H]的偏移地址1000H送至AX。理解时,可直接将[ ]去掉,等同于MOV AX,1000H。
DOS的中断调用
通过给AH寄存器赋值,然后调用INT 21H指令,计算机就会根据AH寄存器中的值执行相应的操作,其中1H是键盘输入并回显,AL中有输入字符。
sub AL, 30h 的意思是把 AL中的值减去30h再存入AL中.
其目的是把输入的数字代码转换为具体的数值.

转移表法
DATAS SEGMENT
MODE DB 01H
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS

START:
MOV AX,DATAS
MOV DS,AX
MOV AL,MODE

LEA BX,TAB
ADD AL,AL
MOV AH,0H
ADD BX,AX
JMP BX


TAB:
JMP SHORT L0
JMP SHORT L1
JMP SHORT L2
JMP SHORT L3
JMP SHORT L4
JMP SHORT L5
JMP SHORT L6
JMP SHORT L7


L0:MOV DL,'0'
MOV AH,02H
INT 21H
JMP L8

L1:MOV DL,'1'
MOV AH,02H
INT 21H
JMP L8

L2:MOV DL,'2'
MOV AH,02H
INT 21H
JMP L8

L3:MOV DL,'3'
MOV AH,02H
INT 21H
JMP L8

L4:MOV DL,'4'
MOV AH,02H
INT 21H
JMP L8

L5:MOV DL,'5'
MOV AH,02H
INT 21H
JMP L8

L6:MOV DL,'6'
MOV AH,02H
INT 21H
JMP L8

L7:MOV DL,'7'
MOV AH,02H
INT 21H
JMP L8

L8:MOV AH,4CH
INT 21H
CODES ENDS
END START


//地址表法
DATAS SEGMENT
TAB DW L0,L2,L3,L4,L5,L6,L7
MODE DB 01H
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS

START:
MOV AX,DATAS
MOV DS,AX
MOV AL,MODE

ADD AL,AL
MOV AH,0H
ADD BX,AX
SUB BX,2
JMP TAB[BX]


	



L0:MOV DL,'0'
MOV AH,02H
INT 21H
JMP L8

L1:MOV DL,'1'
MOV AH,02H
INT 21H
JMP L8

L2:MOV DL,'2'
MOV AH,02H
INT 21H
JMP L8

L3:MOV DL,'3'
MOV AH,02H
INT 21H
JMP L8

L4:MOV DL,'4'
MOV AH,02H
INT 21H
JMP L8

L5:MOV DL,'5'
MOV AH,02H
INT 21H
JMP L8

L6:MOV DL,'6'
MOV AH,02H
INT 21H
JMP L8

L7:MOV DL,'7'
MOV AH,02H
INT 21H
JMP L8

L8:MOV AH,4CH
INT 21H
CODES ENDS
END START


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值