汇编语言程序设计实验1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一

一、实验内容

1)X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:

①计算表达式值(V–(X*Y+Z-720))/X;

②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。

二、源代码

DA TA SEGMENT

X DW -1

Y DW 720

Z DW 0

V DW 1000

SUM1 DW ?

SUM2 DW ?

DA TA ENDS

STACK SEGMENT STACK

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START: MOV AX,DATA

MOV DS,AX

MOV AX,X

MOV BX,Y

IMUL BX

MOV BX,Z

ADD AX,BX

SUB AX,2D0H

MOV BX,V

SUB BX,AX

MOV AX,BX

CBW

MOV BX,X

IDIV BX

MOV SUM1,AX

MOV SUM2,DX

MOV AX,4C00H

INT 21H

CODE ENDS

END TART 三、运行结果

实验二

一、实验要求

2) 有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。

二、源程序

DA TA SEGMENT

BUF1 DW 9348H

BUF2 DW 4 DUP(0),0AH,0DH,'$'

BUF3 DW 2 DUP(0),'$'

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

BEGIN:MOV AX,DA TA

MOV DS,AX

MOV AX,BUF1

ADD AX,0

JS NEXT

MOV BUF2,AX

MOV BUF3,AX

JMP EEE

NEXT:AND AX,7FFFH

NOT AX

MOV BUF2,AX

INC AX

MOV BUF3,AX EEE:MOV CX,0004H

MOV DI,OFFSET BUF2

MOV DX,[DI]

ADD DI,03

BBB:MOV AX,DX

AND AX,000FH

CMP AL,0AH

JB QQQ

ADD AL,07H

QQQ:ADD AL,30H

MOV [DI],AL

DEC DI

PUSH CX

MOV CL,04H

SHR DX,CL

POP CX

LOOP BBB

MOV CX,0004H

MOV SI,OFFSET BUF3

MOV DX,[SI]

ADD SI,03H

CCC:MOV AX,DX

AND AX,000FH

CMP AL,0AH

JB DDD

ADD AL,07H

DDD:ADD AL,30H

MOV [SI],AL

DEC SI

PUSH CX

MOV CL,04H

SHR DX,CL

POP CX

LOOP CCC

MOV DX,OFFSET BUF2

MOV AH,09H

INT 21H

MOV DX,OFFSET BUF3

MOV AH,09H

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END BEGIN

三、运行结果

心得体会

通这次试验,熟悉了MASM汇编环境和汇编程序设计的格式,熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。同时对顺序和循环程序设计更加熟练,并在编程过程中熟悉了算术运算、位操作和串操作等指令。算术运算中,对于不同类型数进行运算时,要进行扩展,还有不要忽视进位;对于循环和控制转移指令,如果有多个循环或转移指令,则前一个循环或转移结束后,一定到无条件转移到结尾处;串操作指令中,源串和目的串分别定义在DS和ES两个段中的,不能对ES进行段超越操作等。

相关文档
最新文档