汇编语言程序设计实验1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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进行段超越操作等。