教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 建筑文档 >

大学汇编实验报告答案(软件)

来源:网络收集 时间:2026-08-24
导读: 目 录 实验一 DEBUG的启动及其基本命令的使用 实验二 实验三 实验四 实验五 实验六 实验七 实验八 实验九 内存操作数及寻址方法 汇编语言程序的调试与运行 查表程序设计 系统功能调用 分支程序设计 循环程序设计 子程序设计 综合程序设计 实验一 DEBUG的启动

目 录

实验一 DEBUG的启动及其基本命令的使用

实验二 实验三 实验四 实验五 实验六 实验七 实验八 实验九

内存操作数及寻址方法

汇编语言程序的调试与运行

查表程序设计

系统功能调用

分支程序设计

循环程序设计

子程序设计

综合程序设计

实验一 DEBUG的启动及其基本命令的使用

源程序:(指导书中给出)

DATA SEGMENT

STRING1 DB 'Move the cursor backward' STRING2 DB 'Move the cursor backward' MESS1 DB 'Match.',13,10,'$' MESS2 DB 'No Match.',13,10,'$' DATA ENDS

STACK SEGMENT STACK DB 40 DUP (?) STACK ENDS

PROGNAM SEGMENT

ASSUME CS:PROGNAM,DS:DATA,ES:DATA,SS:STACK

MAIN PROC FAR START: PUSH DS XOR AX,AX PUSH AX

MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX

LEA SI,STRING1 LEA DI,STRING2 CLD

MOV CX,25 REPZ CMPSB JZ MATCH

LEA DX,MESS2 JMP SHORT DISP MATCH: LEA DX,MESS1 DISP: MOV AH,09h INT 21H RET

MAIN ENDP PROGNAM ENDS END START

运行结果:

用DEBUG调试将输出字符串改为‘No Match’

用E指令修改“backward”为“forward”

再次用d命令查看修改结果。

用g命令运行程序

实验二 内存操作数及寻址方法

1、(1)程序说明:设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用字处理程序编辑程序。

(2)调试说明:对SP的地址分配不到2000,计算机自动分配为0000,此时我就人为的把堆栈的首地址定义为2000。 (3)写出源程序清单和执行结果:

源程序:

STACK SEGMENT STACK DW 100 DUP(0) STACK ENDS CODE SEGMENT

ASSUME SS:STACK,CS:CODE START:MOV AX,3000H MOV BX,5000H MOV SP,2000H

PUSH AX ;将AX中的内容压栈 MOV AX,BX ;BX中的内容给AX POP BX

MOV AH,4CH INT 21H CODE ENDS

END START

用debug调试结果:

2、程序说明:用masm和link 对以下程序进行汇编和连接,调试程序在DEBUG调试程序状态下进行。用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。

源程序:

DATA SEGMENT ORG 0300H

A DB 12H,23H,34H,45H,56H,67H,78H,89H,9AH DATA ENDS

PROGNAM SEGMENT

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

MOV BX,0300H

MOV AX,0300H ;立即数寻址

MOV AX,[0300H] ;存储器寻址方式中的直接寻址方式 MOV AX,[BX] ;寄存器间接寻址 MOV SI,2

MOV AX,0001[BX] ;基址寻址 MOV AX,[BX][SI] ;基址加变址

MOV AX,0001[BX][SI] ;带偏移量的基址加变址 MOV AH,4CH INT 21H PROGNAM ENDS END START

用debug调试结果:

实验五 系统功能调用

1、程序说明:试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

2、调试说明:在DEBUG显示字符窜时,曾显示乱码,未能按预期显示,经检查发现在编译字符窜时出现错误,因为调用21H中断输出一串字符要求用'$'结尾,我没用上‘$’。还有,键盘输入字符是被存放在AX内,当要多次使用AX时应该把输入内容另存一地址 3、源程序清单和执行结果:

源程序:

DATA SEGMENT DB ? DATA ENDS

STACK SEGMENT STACK DB 5 DUP(0) STACK ENDS CODE SEGMENT

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

MOV AH,01H ;从输入端读取字符 INT 21H

SUB AL,20H ;小写转换成大写 MOV DL,AL

MOV AH,02H ;输出字符到终端 INT 21H

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

运行结果:

实验六 分支程序设计

1、实验说明:假设有一组数据:5,-4,0,3,100,-51,请编一程序,判断:每个数大于0,等于0,还是小于0;并输出其判断结果。 即:

1 当x>0 y= 0 当x=0 -1 当x<0

2、调试说明:在最初的程序中,我使用了MOV BX,XX等语句,后来发现像这样的语句在实际使用中有些累赘,于是我便做了修改,简化了汇编语言。其次,在调试中,发现符号无法显示的问题,于是采用两次显示符号的方法,较理想的解决了负号问题。 3、程序框图: 开始

DS 段地址

SI 数据串偏址

CX 数据串长度

取数据并与 0 比较大小 小于

大于等于 等于 是否为0

显示1

YES INC SI 循环判断

NO

返回DOS

显示-1 显示0 4、源程序清单和执行结果:

源程序:

DATA SEGMENT

XX DB 05H,0FCH,00H,03H,64H,0CDH Y1 DB 'Y=1',0DH,0AH,'$' Y2 DB 'Y=0',0DH,0AH,'$' Y3 DB 'Y=-1',0DH,0AH,'$' DATA ENDS

STACK SEGMENT STACK DB 10 DUP(0) STACK ENDS

CODE SEGMENT

ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA SI,XX MOV AX,0 MOV CX,6 L1: MOV AL,[SI]

CMP AL,0 ;与0比较 JG BIGER JE EQUAL

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

JMP OUTPUT

BIGER: MOV DX,OFFSET Y1 MOV AH,09H INT 21H

JMP OUTPUT

EQUAL: MOV DX,OFFSET Y2 MOV AH,09H INT 21H

OUTPUT:INC SI LOOP L1 MOV AH,4CH INT 21H CODE ENDS

END START

运行结果:

…… 此处隐藏:3456字,全部文档内容请下载后查看。喜欢就下载吧 ……
大学汇编实验报告答案(软件).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/681065.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)