汇编实验报告(3)

2019-04-02 15:44

-u

10F3:0101 EB08 JMP 010B

10F3:0103 8B5E06 MOV BX,[BP+06]

10F3:0106 C747060000 MOV WORD PTR [BX+06],0000 10F3:010B 8B5E06 MOV BX,[BP+06]

10F3:010E 837F0600 CMP WORD PTR [BX+06],+00 10F3:0112 750C JNZ 0120

10F3:0114 8A4604 MOV AL,[BP+04] 10F3:0117 D0D8 RCR AL,1 10F3:0119 7305 JNB 0120

10F3:011B B8FFFF MOV AX,FFFF 10F3:011E EB35 JMP 0155

10F3:0120 8B5E06 MOV BX,[BP+06]

四、实验调试后的程序清单

例8-2

DATA SEGMENT

STR1 DB '0123456789ABCDE' CN EQU $-STR1 STR2 DB CN DUP(?) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV CX,CN LEA SI,STR1 LEA DI,STR2 LP: MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP LP MOV AH,4CH INT 21H CODE ENDS

END START

例8-4

DATA SEGMENT

STR1 DB 'ASDFGHJK' CN EQU $-STR1 STR2 DB 'ASDFGTYU' FLAG DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV FLAG,1H

MOV SI,OFFSET STR1 MOV DI,OFFSET STR2 MOV CX,CN CLD

REPZ CMPSB JZ NEXT

MOV FLAG,0H NEXT: MOV AH,4CH INT 21H CODE ENDS

END START

例8-6

DATA SEGMENT

STR1 DB 'PLEASE INPUT STRING:',0AH,0DH,'$' STBUF DB 100 DUP(?) CN DB ? DATA ENDS

CODE SEGMENT

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

MOV DX,OFFSET STR1 MOV AH,09H INT 21H MOV CL,0H LP: CMP AL,0DH JZ EXIT

MOV [SI],AL INC SI

CMP AL,30H JB NEXT CMP AL,39H JA NEXT INC CL

NEXT: MOV AH,01H INT 21H JMP LP

EXIT: MOV CN,CL

11

MOV AH,4CH INT 21H CODE ENDS

END START

例8-7

DATA SEGMENT

STR1 DB 'WHAT IS YOUR NAME',0AH,0DH,'$' CN EQU $-STR1 ADDR DW ? FLAG DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV CX,CN

MOV DI,OFFSET STR1 MOV AL,20H REPNZ SCASB JNZ NEXT DEC DI

MOV DI,ADDR MOV FLAG,01H JMP EXIT

NEXT: MOV FLAG,0H EXIT: MOV AH,4CH INT 21H CODE ENDS

END START

例8-8

DATA SEGMENT

X DW 112,342,-56,34,42,546,324,2,4,12,42 Y DW -42,-442,140,123,5,21,542,656,126,12 Z DW 10 DUP(?) F DW 0198H DATA ENDS

CODE SEGMENT

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

MOV SI,OFFSET X MOV DI,OFFSET Y MOV BX,OFFSET Z

MOV DX,F MOV CX,10 LP: ROR BX,1H JZ NEXT MOV AX,[SI] ADD AX,[DI] MOV [BX],AX JMP EXIT NEXT: MOV AX,[SI] SUB AX,[DI] MOV [BX],AX EXIT: ADD SI,2 ADD DI,2 LOOP LP

MOV AH,4CH INT 21H CODE ENDS

END START

例8-10

DATA SEGMENT

STR DB 'WHAT IS YOUR NFSAKENFSA ',0 DATA ENDS

CODE SEGMENT

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

MOV SI,OFFSET STR MOV AL,[SI] LP: CMP AL,0 JZ EXIT CMP AL,'A' JB NEXT CMP AL,'Z' JA NEXT OR AL,20H MOV [SI],AL NEXT: INC SI

MOV AL,[SI] JMP LP

EXIT: MOV AH,4CH INT 21H CODE ENDS

END START

12

例8-12

DATA SEGMENT

DAT1 DB 'THIS IS A PROGRAM' CN EQU $-DAT1 DAT2 DB 'A' DATA ENDS

CODE SEGMENT

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

MOV AL,DAT2 LEA DI,DAT1 REPNZ SCASB JZ FIND JMP EXIT FIND: DEC DI MOV BX,4 LP: MOV CL,4 ROL DI,CL MOV DX,DI AND DL,0FH CMP DL,9 JBE NEXT ADD DL,07H NEXT: ADD DL,30H MOV AH,20H INT 21H DEC BX JNZ LP

MOV DL,'H' MOV AH,02H INT 21H

EXIT: MOV AH,4CH INT 21H CODE ENDS

END START

五、实验结果

六、实验总结

13

试验五 子程序设计

一、试验内容

例9-6 在内存中有一子单元ADR,存有4位BCD码,要求编写一个程序,完成将其转换成4个字节的非组合BCD码并存放到以BUF为首单元的存储区中的功能。

分析:根据题意,可将被分离的字数据放入AX中,用寄存器DI指向存放结果的首单元,实现BCD码的分离可以用截取低4位右移4位的方法连续进行4次完成。

例9-7 已知在内存中有两个字节数组,分别求两个数组的累加和,要求用子程序实现。

分析:完成求累加和的子程序可以通过堆栈传递参数。将数组首单元的地址和数组长度

送入堆栈,调用子程序完成求和功能。

例9-8 从键盘向缓冲区BUF中输入若干位十进制的ASCII码,并转换为二进制数,存于BIN

开始的字单元中。BUF中的数字以0DH结束。

例9-9 假设有一子程序HTOA,将一位十六进制数转换为ASCII码,利用其可实现两位十六

进制数转换为ASCII码的子程序BHTOA和四位十六进制转换为ASCII码的子程序QHTOA。

例9-10 用递归的方法将一个字符数组中的字符串反序输出,字符串以‘$’结束。

二、实验目的

掌握子程序的定义

学习子程序设计的基本过程和设计方法 理解子程序的嵌套和递归 了解中断的相关概念

熟悉DOS功能调用和BIOS调用

在程序设计中,常把多用到的同一程序段或者具有一定功能的程序段抽取出来存放在某一存储区域中,当需要执行的时候,使用调用指令转到这段程序来执行,执行完再返回原来的程序,这个程序段就成为子程序。子程序的设计与使用非常重要。子程序又称为过程,它相当于高级语言中的过程或函数。在执行中需要反复执行的程序段或具有通用性的程序段都可以编为子程序。其中调用子程序的程序段称为主程序。主程序中调用指令的下一条指令的地址成为返回地址,有时也成为断点。

子程序是模块化程序设计的重要手段,采用子程序结构具有以下优点: 1 简化程序设计过程,大量节省程序设计时间;

2 缩短了程序的长度,节省了计算机汇编源程序的时间和程序的存储空间; 3 增加了程序的可读性,便于对程序进行修改和调试; 4 方便程序的模块化,结构化和自顶向下的程序。

三、试验步骤

1 编译C:\\masm>masm test.asm Object filename [test906.OBJ]: Source listing [NUL.LST]: Cross-reference [NUL.CRF]:

2 链接C:\\masm>link test.obj

14

Run File [TEST906.EXE]: List File [NUL.MAP]: Libraries [.LIB]:

3 debug 源程序C:\\masm>debug test -t

AX=1168 BX=0000 CX=0080 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=1158 ES=1158 SS=1168 CS=1169 IP=0003 NV UP DI PL NZ NA PO NC 1169:0003 8ED8 MOV DS,AX -u

1169:0003 8ED8 MOV DS,AX 1169:0005 A10000 MOV AX,[0000] 1169:0008 BF0200 MOV DI,0002 1169:000B E80A00 CALL 0018 1169:000E B90400 MOV CX,0004 1169:0011 E82400 CALL 0038 1169:0014 B44C MOV AH,4C 1169:0016 CD21 INT 21 1169:0018 53 PUSH BX 1169:0019 51 PUSH CX 1169:001A 50 PUSH AX 1169:001B 57 PUSH DI

1169:001C B90400 MOV CX,0004 1169:001F 8BD8 MOV BX,AX 1169:0021 83E30F AND BX,+0F

四、实验调试后的程序清单

例9-6

DATA SEGMENT ADR DW 3425H BUF DB 4 DUP(?) DATA ENDS

CODE SEGMENT

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

MOV DI,OFFSET BUF CALL APART MOV CX,4 CALL DISP MOV AH,4CH

INT 21H

APART PROC NEAR PUSH BX PUSH CX PUSH AX PUSH DI MOV CX,4 STA: MOV BX,AX AND BX,00FH MOV [DI],BL INC DI SHR AX,1 SHR AX,1 SHR AH,1 SHR AH,1 SHR AH,1 LOOP STA POP DI POP AX POP CX POP BX RET APART ENDP

DISP PROC NEAR PUSH DI PUSH AX PUSH CX PUSH DX MOV CX,4 ADD DI,3 LP: MOV DL,[DI] ADD DL,30H MOV AH,02H INT 21H DEC DI LOOP LP POP DX POP CX POP AX POP DI RET DISP ENDP CODE ENDS

END START

例9-7

DATA SEGMENT

ARRA DB 13,24,45,36,34,90,87,-63 CNA EQU $-ARRA SUMA DW ?

ARRB DB -21,23,-34,56,65,67,78,81,69,0 CNB EQU $-ARRB SUMB DW ? DATA ENDS

STACK SEGMENT

STA DB 100 DUP(?) TOP EQU 100 STACK ENDS CODE SEGMENT

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

MOV AX,STACK MOV SS,AX MOV SP,TOP

MOV SI,OFFSET ARRA PUSH SI

MOV AX,CNA PUSH AX CALL SUM

MOV SI,OFFSET ARRB PUSH SI

MOV AX,CNB PUSH AX CALL SUM MOV AH,4CH INT 21H SUM PROC NEAR PUSH AX PUSH BX PUSH CX PUSH BP PUSHF MOV BP,SP

MOV BX,[BP+14] MOV CX,[BP+12] MOV AX,0 LP1: ADD AL,[BX] ADC AH,0 INC BX

15


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

下一篇:基于单片机的温湿度报警系统设计开题报告

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

马上注册会员

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