INT 21H
ERROR:MOV DX,OFFSET ERRMES MOV AH,09H INT 21H
START1: MOV AH,06H ;判断是否有键按下 MOV DL,0FFH INT 21H
JE START1 MOV AX,4C00H INT 21H
SHOW PROC NEAR MOV AL,DS:[SI] AND AL,0F0H SHR AL,4
CMP AL,0AH JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H
MOV AL,DS:[SI] AND AL,0FH CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H
MOV DL,AL MOV AH,02H INT 21H RET ENDP CODE
;若没有转START0 ;有键返回DOS
;取高4位 ;是否是A以上的数
;显示字符
;取低4位
;显示字符
ENDS
END START
4 .用减奇数开平方运算实验
源文件名DVA4_4.ASM(在文件夹“ASM_汇编例程”中)
- 31 -
实验程序清单如下:
STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS
DDATA SEGMENT
MES1 DB 'The square root of $' MES2 DB ' is:$'
NUMB DW 0040H DDATA ENDS
CODE SEGMENT
ASSUME CS: CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX
MOV DX,OFFSET MES1 MOV AH,09H INT 21H
MOV SI,OFFSET NUMB MOV AX,[SI] CALL SHWORD
MOV DX,OFFSET MES2 MOV AH,09H INT 21H MOV AX,[SI] MOV CL,00H MOV DX,0001H A1: SUB AX,DX JB A2 INC CL ADD DX,02H JMP A1
A2: MOV BL,CL CALL SHOW
START0:MOV AH,06H MOV DL,0FFH INT 21H
JE START0
;判断是否有键按下
;若没有转START0
- 32 -
MOV AX,4C00H INT 21H SHWORD PROC NEAR
MOV BL,AH CALL SHOW MOV BL,AL CALL SHOW RET
ENDP
SHOW PROC NEAR PUSH AX PUSH DX MOV AL,BL
AND AL,0F0H SHR AL,4
CMP AL,0AH
JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AL,BL
AND AL,0FH CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H
MOV DL,AL MOV AH,02H INT 21H POP DX POP AX RET
ENDP CODE ENDS
END START
;有键返回DOS
;取高4位 ;是否是A以上的数
;显示字符
;取低4位
;显示字符
- 33 -
实验五 分支程序设计实验
一、实验目的
1.掌握分支程序的设计方法。 2.进一步熟悉汇编语言的语法结构。
二、实验内容及说明
程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图5-1 所示。 本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。实验可以使用BH 、BL 作为暂存现行的最大值和最小值,且在程序的初始,将BH 和BL 初始化为首字节的内容,然后进入循环操作。在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH、BL 进行比较,若取出的字节内容比BH 的内容大或比BL 中的内容小,则修改之。当循环结束操作时,将BH、BL 分别送屏幕显示。
Y 条件满足? N 语句序列 语句序列 Y 条件满足? 语句序列 N 图5-1 分支结构示意图
三、实验步骤
(1) 运行DVCC32JHP软件,选择编辑Edit 菜单编写实验程序;在数据段声明的8 字节的数据为:0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H。
(2) 使用“ASM编译”菜单中“编译+连接+运行”选项,对实验程序进行汇编、连接。汇编、连接无误的话,就直接运行程序。观察运行结果。 (3) 更改数据区中的数据,验证程序的正确性。
四、参考流程图 如图5-2所示
- 34 -
开始
CX=字节个数
Y CX=0? N
BH=[SI],BL=[SI]
SI=SI+1,AL=[SI] N BH=AL AL < BH?
Y N BL=AL AL > BL?
Y CX = CX-1 N CX=0?
Y 结束 SI-1 图5-2 分支程序实验框图
五、参考程序
参考实验程序文件名DVA5.ASM(在文件夹“ASM_汇编例程”中) 实验程序清单如下:
STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS
- 35 -