汇编语言实验(10)

2019-08-03 14:54

STOSW

MOV AX,ES:[DI]

MOV CSBAK,AX MOV AX,SEG MYINT STOSW

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

MOV SI,OFFSET BUF1

MOV CX,10H INT 47H

MOV AX,0 MOV ES,AX

MOV DI,4*47H MOV AX,IPBAK CLD STOSW

MOV AX,CSBAK STOSW

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

JE START0 MOV AX,4C00H INT 21H

RET ENDP

MYINT PROC FAR PUSH AX

PUSH DX

C1: MOV AL,[SI] AND AL,0F0H SHR AL,4 CMP AL,0AH

JB C2 ADD AL,07H

C2: ADD AL,30H

;保存原有CS

;显示提示信息

;显示BUF1中的内容

;恢复系统中断矢量 ;判断是否有键按下

;若没有转START0 ;有键返回DOS ;自定义显示中断,入口参数为BL ;取高4位 ;是否是A以上的数

- 46 -

MOV DL,AL MOV AH,02H IN 21H MOV AL,[SI] AND AL,0FH

CMP AL,0AH JB C3 ADD AL,07H

C3: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H INC SI LOOP C1 POP DX POP AX

IRET

ENDP CODE ENDS

END START

;显示字符

;取低4位

;显示字符

;中断返回

- 47 -

实验八 综合程序设计实验

一、实验目的

(1) 掌握分支、循环、子程序调用的基本程序结构。 (2) 掌握32 位寄存器、指令使用的基本方法。 (3) 学习综合程序的设计、编制及调试。

二、实验内容 1.排序实验

本实验要求编写一个程序,对存贮器中的一组双字进行排序,并将排序结果显示在屏幕上。在编写过程中,应使用32 位寄存器,并且采用基址+变址+偏移的寻址方式。在程序中使用80x86指令系统中有关32 位的指令、寻址方式及32 位寄存器时需要在文件头使用“.386”或“.386p”。

2.用32 位寄存器、指令、扩展寻址方式实现数码转换及显示

本实验要求将一组ASCII 字符转换成十六进制数码,并在屏幕上显示出来。要求使用32 位寄存器、32 位的指令和寻址方式。如将字符串“This is DVCCIN speaking!”进行转换,应转换成:

54H、68H、69H、73H、20H、69H、73H、20H、64H、76H、63H、63H、69H、6EH、20H、 73H、70H、65H、61H、6BH 、69H、6EH、67H、21H。

三、实验步骤

(1) 运行DVCC32JHP 软件,选择编辑Edit 菜单编写实验程序。

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

四、参考程序

1. 排序实验

源文件名DVA8_1.ASM(在文件夹“ASM_汇编例程”中) 实验程序清单如下: .386p

STACK1 SEGMENT STACK USE16 DB 64 DUP(?) STACK1 ENDS

DATA SEGMENT USE16

MES1 DB 'The array is:$'

- 48 -

MES2 DB 'After sort:$'

DATA1 DD

110015H,111101D8H,22110002H,111a0004H,1d110009H,111f044H,11d10203H,32H COUNT =8 DATA ENDS

CODE SEGMENT USE16

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

MOV DX,OFFSET MES1 MOV AH,09H INT 21H CALL KENTER

CALL SAHEX CALL KENTER

CALL BUBBLE MOV DX,OFFSET MES2 MOV AH,09H INT 21H CALL KENTER CALL SAHEX CALL KENTER

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

JE START0 MOV AX,4C00H INT 21H BUBBLE PROC XOR ESI,ESI XOR ECX,ECX

MOV SI,OFFSET DATA1 MOV CX,COUNT L1: XOR EBX,EBX L2: CMP EBX,ECX JAE LB

MOV EAX,[ESI+EBX*4+4]

;显示未排序的数组

;显示排序后的数组

;判断是否有键按下

;若没有转START0 ;有键返回DOS

- 49 -

CMP [ESI+EBX*4],EAX

JGE LNS

XCHG [ESI+EBX*4],EAX MOV [ESI+EBX*4+4],EAX LNS: INC EBX JMP L2 LB: LOOP L1 RET

BUBBLE ENDP

SAHEX PROC NEAR XOR ESI,ESI XOR ECX,ECX

MOV SI,OFFSET DATA1 MOV CX,COUNT*4 C1: MOV EBX,ECX DEC EBX

MOV AL,DS:[ESI+EBX] 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:[ESI+EBX] AND AL,0FH CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H MOV DL,AL

MOV AH,02H INT 21H

TEST EBX,03H JNZ C4

MOV DL,20H

4位 A以上的数

4位

- 50 - ;取高;是否是;显示字符;取低;显示字符


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

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

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

马上注册会员

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