河北工业大学汇编语言程序设计实验(2)

2019-08-20 18:43

河北工业大学汇编语言实验设计

MOV AL, BUF ;将BUF所指向的一个字节数据装入AL CMP AL, BUF+1 ;比较BUF与BUF+1大小

JNB LP1 ;如果BUF不小于BUF+1,则转到lp1,否则顺序向下执行

MOV AL, BUF+1 ;将BUF+1所指向的一个字节数据装入AL LP1: CMP AL, BUF+2 ;将BUF和BUF1中较大的一个和BUF+2比较大小

JAE LP2 ;如果BUF2小,则转到lp2,否则执行顺序向下执行 MOV AL, BUF+2 ;此时BUF2为三个数中最大的一个,将最大数装入AL寄存器中

LP2: MOV CX, 04H ;以下是将输出的最大数转换为相应的ASCII值MOV DI, OFFSET MAX MOV DL, AL INC DI

LP3: AND AL, 0FH CMP AL, 0AH JB LP4 ADD AL, 07H LP4: ADD AL, 30H MOV [DI], AL DEC DI PUSH CX MOV CL, 03H SHR DL, CL POP CX MOV AL, DL LOOP LP3

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

MOV AH, 4CH INT 21H CODE ENDS END BEGIN

河北工业大学汇编语言实验设计

4) 要求同上,只是比较的数为有符号数。 STACK SEGMENT STACK DB 1000 DUP(0) STACK ENDS DATA SEGMENT

BUF DB 98H, 75H, 32H MAX DB 4 DUP (?), '$' DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK BEGIN: MOV AX, DATA MOV DS, AX MOV AL, BUF CMP AL, BUF+1

JG LP1 ;JG为比较两个有带符号数的大小,比较BUF和BUF1的大小,若BUF>BUF1,则跳转到lp1继续执行,否则顺序向下执行 XCHG AL, BUF+1 ;交换AL寄存器中的内容和BUF1,使AL寄存器中存放BUF和BUF1中较大的一个

LP1: MOV MAX, AL

JGE lp2 ;比较两个带符号数,如果BUF2小,则转到lp2,否则执行顺序向下执行 MOV AL, BUF+2

Lp2: MOV MAX, AL ;以下是将输出的最大数转换为相应的ASCII值,与1)题相同

MOV CX, 04H

MOV DI, OFFSET MAX

河北工业大学汇编语言实验设计

MOV DL, [DI] INC DI

LP3: MOV AL, DL AND AL, 0FH CMP AL, 0AH

JB LP4 ADD AL, 07H

LP4: ADD AL, 30H MOV [DI], AL DEC DI PUSH CX MOV CL, 02 SHR DX, CL POP CX LOOP LP3

MOV DX, OFFSET MAX MOV AH, 09H INT 21H MOV AH, 4CH INT 21H CODE ENDS

END BEGIN

5) 将1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果

ORG 3000H ;转到3000H内存单元,在DEBUG状态下输入-a 3000 3000 BE0010 MOV SI,1000 ;给SI赋值1000 3003 BF0910 MOV DI,1009 ;给DI赋值1009

3006 8A14 MOV DL,[SI] ;将SI中的内容赋给DL

3008 80C200 ADD DL,00 ;DL值的+00,以便进行转移测试 300B 7B0B JPO 2018 ;奇偶位为0则转移到3018执行 300D 8615 XCHG DL,[DI] ;交换DL和DI中的内容 300F 8814 MOV [SI],DL ;把DL的值给SI 3011 4F DEC DI ;DI减1

3012 39FE CMP SI,DI ;比较SI和DI的值的大小 3014 7407 JE 201D ;如果等于则转移到301D执行 3016 EBF0 JMP 2008 ;无条件转移到3008执行 3018 46 INC SI ;SI加1

河北工业大学汇编语言实验设计

3019 8A14 MOV DL, [SI] ;把SI的值给DL

301B EBF5 JMP 2012 ;无条件转移到3012挪移

301D F4 HLT

实验二 循环与子程序程序设计

一、 实验目的

1) 加深对循环结构的理解。 2)掌握循环程序的设计方法。 3)学习子程序的定义和调用方法。

4)掌握子程序、子程序的嵌套、递归子程序的结构。 5) 掌握子程序设计、编制及调试。

6) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、 实验内容

1) 编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。

2)将从3000H内存单元开始的100个字节存储单元全部清0。 3)编制在屏幕上显示九九乘法表的程序。 4)编制在屏幕上显示用*组成的三角形的程序。

5)设有五个字数据存放在以BUF为首地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在RESULT单元,和的高位字放在RESULT+2单元,并将结果显示在屏幕上。

6)编写一个递归子程序,计算指数函数Xn的值,其中X,n从键盘输入。

三、 源程序

EXAM2-1

DATA SEGMENT

BUF DB’S=1+2×3+3×4+4×5+…+N(N+1)+…=’,’$’ RES DW 4 DUP(0),’$’ DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

河北工业大学汇编语言实验设计

START: MOV AX,DATA MOV DS, AX

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

MOV DX, 1

MOV BL, 2

NEXT: MOV AL, BL INC BL MUL BL

ADD DX, AX CMP AX, 200 JNA NEXT

MOV CX, 0004H

MOV DI, OFFSET RES ADD DI, 03H NEXT1:MOV AX, DX AND AX, 000FH CMP AL, 0AH JB NEXT2 ADD AL, 07 NEXT2:ADD AL, 30H MOV [DI],AL DEC DI PUSH CX

MOV CL,04 SHR DX,CL POP CX

LOOP NEXT1

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

MOV AH, 4CH INT 21H CODE ENDS

END START

执行程序EXAM2-1·EXE,屏幕上显示结果: S=1+2×3+3×4+4×5+…+N(N+1)+…=045F

EXAM2-2

ORG 2000H 2000 BF0030 MOV DI, 3000 2003 B164 MOV CL, 64

2005 C60500 MOV BYTE PTR[DI],0 2008 47 INC DI


河北工业大学汇编语言程序设计实验(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国石油大学网络教育技术经济学

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

马上注册会员

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