汇编语言实验(8)

2019-08-03 14:54

DDATA SEGMENT MES1 MES2 NUMB DDATA

DB 'The least number is:$'

DB 0AH,0DH,'The largest number is:$' DB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX

MOV SI,OFFSET NUMB MOV CX,0008H JCXZ A4 MOV BH,[SI] MOV BL,BH

A1: LODSB CMP AL,BH JBE A2 MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3 MOV BL,AL A3: LOOP A1

A4: MOV DX,OFFSET MES1 MOV AH,09H INT 21H

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

AL=DS:[SI],SI=SI+1

mes1

4 位

- 36 - ;;显示;取高 ;显示字符

AND AL,0FH CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H

MOV DX,OFFSET MES2

MOV AH,09H INT 21H MOV AL,BH AND AL,0F0H SHR AL,4 CMP AL,0AH JB C22 ADD AL,07H C22: ADD AL,30H MOV DL,AL

MOV AH,02H INT 21H MOV AL,BH AND AL,0FH CMP AL,0AH JB C33 ADD AL,07H C33: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H

START0: MOV AH,06H MOV DL,0FFH INT 21H

JE START0 MOV AX,4C00H INT 21H CODE ENDS

END START

;取低4位

;显示字符

;显示mes2

; 取高 4 位

; 显示字符

; 取低4位

; 显示字符

;判断是否有键按下;若没有转START0 ;有键返回DOS

- 37 -

实验六 循环程序设计实验

一、实验目的

掌握循环程序的设计方法。

二、实验内容及说明

本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。要求实验程序在数据区中存放一组数据,凡是符号位为1 的数据判为负数,逐个判断数据区内的数据,然后将所有数据中凡是符号位为1 的数据的个数累加起来,即得到区内所包含负数的个数。循环程序的结构示意如图6-1所示。

循环部分 循环条件满足? Y 循环条件满足? N Y 循环部分 N

图6-1 循环结构示意图

三、实验步骤

(1) 运行DVCC32JHP 软件,选择编辑Edit 菜单编写实验程序。在数据段中声明10字节的数据为:12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H。

(2) 使用“ASM编译”菜单中“编译+连接+运行”选项,对实验程序进行汇编、连接。汇编、连接无误的话,就直接运行程序。观察运行结果。

(3) 更改数据区中的数据,考察程序的正确性。

四、参考流程图

如图6-2所示

五、参考程序

参考实验程序文件名DVA6.ASM(在文件夹“ASM_汇编例程”中) 实验程序清单如下: STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS

- 38 -

DDATA SEGMENT

NUMB DB 12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H MES DB 'The number of negative is:$' DDATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX

MOV DI,OFFSET NUMB XOR BH,BH MOV CX,10D A1: MOV AL,[DI] TEST AL,80H JE A2 INC BL A2: INC DI LOOP A1

MOV DX,OFFSET MES MOV AH,09H INT 21H

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

mes 定义的字符串

4位

4位

显示字符

- 39 - ;显示 ;取高 ;显示字符 ;取低 ;

START0: MOV AH,06H ;判断是否有键按下

MOV DL,0FFH INT 21H

JE START0 ;若没有转START0 MOV AX,4C00H ;有键返回DOS

INT 21H CODE ENDS

END START

开始 DI=数据区地址 BH=0,清负数个数计数器 CX=数据个数 取数据 N 是负数吗? Y 负数个数计数器BH加1 数据区地址DI加1 N 数据取完吗? Y 显示MES定义的字符串 显示负数个数 返回DOS 图6-2 分支程序设计流程

- 40 -


汇编语言实验(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:某发电厂二氧化碳捕集及利用建设项目可行性研究报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: