河北工业大学汇编实验报告Word文件下载.docx

上传人:b****3 文档编号:14079938 上传时间:2022-10-18 格式:DOCX 页数:32 大小:191.02KB
下载 相关 举报
河北工业大学汇编实验报告Word文件下载.docx_第1页
第1页 / 共32页
河北工业大学汇编实验报告Word文件下载.docx_第2页
第2页 / 共32页
河北工业大学汇编实验报告Word文件下载.docx_第3页
第3页 / 共32页
河北工业大学汇编实验报告Word文件下载.docx_第4页
第4页 / 共32页
河北工业大学汇编实验报告Word文件下载.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

河北工业大学汇编实验报告Word文件下载.docx

《河北工业大学汇编实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《河北工业大学汇编实验报告Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。

河北工业大学汇编实验报告Word文件下载.docx

五、实验步骤

1)输入源程序。

2)汇编、连接程序,生成.EXE文件,执行文件,检查结果。

六、实验报告的要求

1)列出源程序,说明程序的基本结构,包括程序中各部分的功能。

2)说明程序中各部分所用的算法。

3)说明主要符号和所用到寄存器的功能。

4)总结为什么在设计分支程序时必须解决三个问题:

判断、转向和定标号。

5)说明标志位CF、SF和OF的意义。

6)上机调试过程中遇到的问题是如何解决的。

7)对调试源程序的结果进行分析。

Exam1:

DATA 

 

SEGMENT;

数据段

BUF1 

DW 

7898H

BUF2 

DUP(0),0AH,0DH,'

$'

BUF3 

DW 

DUP(0),'

ENDS;

数据段结束

CODE 

代码段

 

ASSUME 

CS:

CODE,DS:

DATA;

段寄存器关联说明伪指令

BEGIN:

MOV 

AX,DATA

DS,AX;

将数据段的基地址装入数据段寄存器DS

AX,BUF1;

将字型变量BUF1的值装入AX寄存器

ADD 

AX,0;

AX寄存器里的数据加0,以便进行转移测试

JS 

NEXT;

判断(AX)的正负,若为负则转到NEXT,为正则往下顺序执行。

MOV 

BUF2,AX;

为正,反码与原码一样

BUF3,AX;

为正,补码与原码一样

JMP 

EEE

NEXT:

AND 

AX,7FFFH;

将符号位变为0

NOT 

AX;

求反码

BUF2,AX;

将BUF1的反码装入BUF2

INC 

AX;

求补码

BUF3,AX;

将补码装入BUF3

EEE:

CX,0004H;

将0004H装入CX计数器寄存器中

DI,OFFSET 

BUF2;

将DI指向变量BUF2开始的存储单元

DX, 

[DI];

将DI所指的数据装入DX寄存器中

DI,03;

将DI指针下移三个字

BBB:

AX,DX;

将DX中的容装入AX寄存器中

AX,000FH;

即使BUF2的低四位不变,其余均变为0

CMP 

AL,0AH;

比较[AL]与0AH的大小,以便能正确转换为0-9的ASCII值

JB 

QQQ;

若[AL]<

0AH,则转到QQQ,否则,顺序执行

AL,07H;

因为[AL]>

0AH,所以[AL]+07H,使得AL能转换成相应数字的ASCII值

QQQ:

AL,30H;

将[AL]转换成相应数字的ASCII值

[DI],AL;

将AL中的容装入以DS中的容为段基地址,以DI的容为偏移地址的存储单元中

DEC 

DI;

DI=DI-1,即将DI指向前一个存储单元

PUSH 

CX;

保存CX寄存器的容

CL,04H;

给CL寄存器赋值为04H

SHR 

DX,CL;

将[DX]逻辑右移四位

POP 

恢复CX寄存器的容

LOOP 

BBB;

循环判断语句,CX=CX-1,若CX不等于0,则转到BBB,将下一个低四位存入存储单元中,否则循环结束

CX,0004H;

给CX寄存器赋值为0004H

SI,OFFSET 

BUF3;

将SI指向变量BUF3开始的存储单元

DX,[SI];

将SI所指的数据装入DX寄存器中

ADD 

SI,03H;

将DI指针下移三个字

CCC:

AX,DX;

AND 

AX,000FH;

即使BUF3的低四位不变,其余均变为0

JB 

DDD;

0AH,则转到DDD,否则,顺序执行

DDD:

AL, 

30H;

[SI],AL;

将AL中的容装入以DS中的容为段基地址,以SI的容为偏移地址的存储单元中

DEC 

SI;

SI=SI-1,即将SI指向前一个存储单元

PUSH 

CX;

CL, 

04H;

SHR 

DX, 

CL;

POP 

LOOP 

CCC;

循环判断语句,CX=CX-1,若CX不等于0,则转到CCC,将下一个低四位存入存储单元中,否则循环结束

OFFSET 

将BUF2的偏移地址装入DX寄存器中

AH,09H

INT 

21H;

在屏幕上显示BUF1的反码

DX,OFFSET 

BUF3

AH,09H

21H;

在屏幕上显示BUF1的补码

AH,4CH

带返回码终止

CODE 

ENDS

END 

BEGIN

Exam2:

DB 

34H,18H,2 

DUP(0), 

'

定义字节型变量,其后的每操作数都占有一个字节

56H, 

83H;

SEGMENT;

CODE, 

DS:

DATA

START:

DS, 

AX;

将数据段基地址装入数据段寄存器DS

AL, 

A;

将A所指的数装入AL寄存器中

BL, 

B;

将B所指的数装入BL寄存器中

BL;

AL+BL->

AL

AH, 

A+1;

将A所指的下一个字节的数据装入AH

BH, 

B+1;

将B所指的下一个字节的数据装入BH

ADC 

AH,BH;

AH与BH进行带进位加法

A,AL;

将第一个无符号数的相加结果放在以A起始的缓冲区

A+1,AH;

将第二个无符号数的相加结果放在以A+1起始的缓冲区

CX,0014H;

以下是将数据转换为相应的ASCII值

DI, 

OFFSETA

MOV 

DX, 

[DI]

03

AX,DX

AX,000FH

CMP 

AL,0AH

JB 

QQQ

AL,07H

AL,30H

[DI], 

AL

DI

CX

14

CL

POP 

LOOP 

NEXT

A

INT 

在屏幕上显示结果

END 

START

Exam3:

STACK 

SEGMENT 

STACK;

堆栈段

1000 

DUP(0);

定义其后的每个操作数都占有一个字节

堆栈段结束

BUF 

DB72H,34H,1FH;

MAX 

DB 

DUP 

(?

), 

DATA 

DATA,SS:

STACK

AX, 

DATA

BUF;

将BUF所指向的一个字节数据装入AL

BUF+1;

比较BUF与BUF+1大小

JNB 

LP1;

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

BUF+1;

将BUF+1所指向的一个字节数据装入AL

LP1:

CMP 

BUF+2;

将BUF和BUF1中较大的一个和BUF+2比较大小

JAE 

LP2;

如果BUF2小,则转到lp2,否则执行顺序向下执行

BUF+2;

此时BUF2为三个数中最大的一个,将最大数装入AL寄存器中

LP2:

CX, 

04H;

以下是将输出的最大

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1