【实验目标要求】

《汇编语言》是计算机科学与技术专业必修的专业基础课程。汇编语言程序设计实验的目标是学习汇编语言程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,汇编语言程序实验的内容与计算机硬件特性联系紧密。通过上机实验的学习,使学生不仅能加深理解和巩固理论课所学的知识,而且还能了解计算机的底层软件的工作过程,为今后学习后续课程打好良好的基础。
【实验学习要求】
认真阅读《IBM-PC汇编语言程序设计》教材中与实验相关的章节内容,提前做好实验预习,做到在每个实验前明确实验目的、掌握实验的基本内容及操作方法;在实验中正确使用实验设备,认真观察、分析实验结果;实验后要根据要求做好总结,上交实验报告。具体要求如下:
1.上机前,要作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。
2.上机时,要熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序、调试程序)的使用方法;在程序调试过程中,有意识的学习及掌握Debug的各种操作命令,以便掌握程序的调试方法及技巧;程序调试完后,须由实验辅导教师在机器上检查运行结果。
3.上机后,应写出实验报告,及时总结。
4.遵守实验室的规章制度,爱护实验设备。

【实验计划】

实验序号 实验项目内容 学时
实验一 IBM-PC寻址方式及DEBUG的使用 3
实验二 熟悉指令系统 3
实验三 建立运行汇编语言程序 3
实验四 循环程序设计 2
实验五 分支程序设计 2
实验六 子程序设计 2
实验七 I/O程序设计 2

【实验教材及主要参考资料】

教材:
1.《IBM-PC汇编语言程序设计(第二版)》,沈美明、温冬蝉编著,清华大学出版社,2001.8。
2.《IBM-PC汇编语言程序设计实验教程》,沈美明、温冬蝉、张赤红编著,清华大学出版社,2008.2。

【实验任务】

知识点

debug操作


命令应用

实验一、IBM-PC寻址方式及DEBUG的使用

实验目的:
1.熟悉DEBUG的功能,运行并掌握其常用命令。
2.使用DEBUG,通过数据传送指令观察IBM-PC机各种寻址方式的区别。
实验内容:

  1. DEBUG的加载及其常用命令(A、U、R、D、E、T、P、G、Q)的使用情况。(注意:微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”。)
    2.将数据段中的两个数求和,结果保存在数据段中。
    源程序、机器语言程序如下:
    CS:0100 Al 00 00 MOV AX,[0000]
    CS:0103 03 06 02 00 ADD AX,[0002]
    CS;0107 A3 04 00 MOV [0004],AX
    CS:010A CB RETF
    数据段内容如下:
    DS:0000 2301 2500 ;两个已知数
    3.在Debug中编制简单的汇编程序片断,并调试运行,得出结果。
    实验主要步骤:
    1.在DOS或Windows的命令行窗口执行命令Debug.exe,进入Debug程序环境,熟悉Debug各个命令的用法。
  2. 实验步骤
    (1)用E命令键人上述机器语言程序和数据段的初值。
    —E DS:000 2301 2500 //000是地址,将01赋给000,将00赋给001 ,23 25截断
    —E DS:006 2A 2A 2A (2A为*,是为便于查看数据段内容而设置)
    —E CS:100 A1 00 00 03 06 02 00
    —E CS:107 A3 04 00 CB
    (2)用D命令检查数据段、代码段内容。
    —D DS:0
    —D CS:100
    (3)用T命令逐条执行上述程序,注意观察每条指令执行后相应寄存器的变化。//用多少次t取决汇编代码的指令有多少条
    (4)用U命令反汇编本程序。
    —U 100 10A
    (5)用R命令修改IP的内容为0100重新执行上述程序。
    —R IP
    显示:IP 010A
    :0100
    (6)用G命令运行程序。
    —G =CS:0100 107
    观察:IP= AX=
    —G =CS:0100 10A
    观察:IP= AX=
    3.自己试着写段程序:
    -A 100↙
    16C6:0100 DB‘1234567890‘↙
    16C6:010A CLD↙
    16C6:010B MOV SI,100↙
    16C6:010E MOV DI,200↙
    16C6:0111 MOV CX,A↙
    16C6:0114 REP MOVSB↙
    16C6:0116↙
    -G =10A 116↙;运行上述程序(起始地址10AH,结束地址116H)。
    -D 100 L A↙;显示DS:100开始10个字节内容
    16C6:0100 31 32 33 34 35 36 37 38-39 30 ‘1234567890
    -D ES:200 L A↙显示ES:100开始10个字节内容
    16C6:0200 31 32 33 34 35 36 37 38-39 30 ‘1234567890
    4.写出实验报告。

知识点

  1. 汇编的基本框架:
    定义数据段
    就是数据存放的地方
    DATA
    SEGMENT

    DATA
    ENDS
    定义代码段
    当然就是要执行的程序代码了
    CODE
    SEGMENT
    START:

    CODE
    ENDS
    END
    START

  2. 字与字节的差别
    字节(Byte/bait/n.[C])是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于有八位,也表示一些计算机编程语言中的数据类型和语言字符。"字"由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。字是计算机进行数据处理和运算的单位。区别:例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。

数据定义指令格式如下: 格式:〔符号名〕 DB\DW\DD\DF\DQ\DT 初值序列 DB定义的为字节类型,DW定义字类型,DD定义双字类型,DF为长字类型,DQ为四字类型,DT为十字节类型,该指令分别定义8位,16位,32位,48位,64位,80位的数据 DW就是表示为该数据分配一个字的存储空间,即16位例如: ARRAY DW 3 DUP(1) 给数组ARRAY 分配3个字,初值为1


实验二、熟悉指令系统

相似的题目:https://blog.csdn.net/qq_41767945/article/details/93417708

实验目的:
1.熟悉8088/8086的指令书写格式、功能。
2.能熟练运用数据传递、算术、逻辑三类指令。
实验内容:
1.用DEBUG调试程序功能编程序计算(W—(X×Y+Z—540))/X。其中X、Y、Z、W均为16位带符号数,要求上式计算结果的商存人AX寄存器中,余数存人DX寄存器。掌握算术指令的用法。
2.用DEBUG编程并查看逻辑指令的运行结果,掌握逻辑指令的用法。
3.熟悉其它几组指令的功能和用法,并区分字、字节操作。
实验主要步骤:
1.预先编制程序片段,实现(W—(X×Y+Z—540))/X,将计算结果的商存人AX寄存器中,余数存人DX寄存器。
程序代码如下:
DATA SEGMENT // data segment 是用来存全局变量和静态变量的内存区域。
X DW 1200H//知识点

数据定义指令格式如下: 格式:〔符号名〕 DB\DW\DD\DF\DQ\DT 初值序列 DB定义的为字节类型,DW定义字类型,DD定义双字类型,DF为长字类型,DQ为四字类型,DT为十字节类型,该指令分别定义8位,16位,32位,48位,64位,80位的数据 DW就是表示为该数据分配一个字的存储空间,即16位例如: ARRAY DW 3 DUP(1) 给数组ARRAY 分配3个字,初值为1

Y DW 0034H
Z DW 0F045H
W DW 034AH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
…… ;在此补充程序代码

MOV AX, X
IMUL Y
MOV CX, AX
MOV BX, DX
MOV AX, Z
CWD
ADD CX, AX
ADC BX, DX
SUB CX, 540
SBB BX, 0
MOV AX, V
CWD
SUB AX, CX
SBB DX, BX
IDIV X

MOV AH,4CH
INT 21H //显示
CODE ENDS
END START
2.可以在Debug程序中使用E命令为变量X、Y、Z、W设置初值。
3.使用A命令汇编程序片段,并用G或T命令执行,用R或D命令查看结果。
4.使用A命令汇编几条逻辑指令,并运行,查看结果。
5.写出实验报告。

知识点

https://zhidao.baidu.com/question/206232052.html

https://blog.csdn.net/spygg/article/details/7828573?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

https://blog.csdn.net/INZT__/article/details/80644658
答案:https://wenku.baidu.com/view/38f1b226941ea76e58fa04e3.html

1.mov ah 09h
int 21h
是实现DOS调用中的09号功能,就是在屏幕上显示字符串
2.jnz结果不为零(或不相等)则转移。
jz即零标志为1就跳转。

JNZ(或JNE)(jump if not zero, or not equal),汇编语言中的条件转移指令。结果不为零(或不相等)则转移。
测试条件:ZF=0

ZF汇编语言中的PSW标志寄存器中的一位,而JZ则是根据ZF决定是否跳转。若ZF=1(表示本次运算结果为0,不为0则ZF=0),则跳转,否则,不跳转ZF的状态根据其他指令的执行结果设置。
jz=jump if zero,即零标志为1就跳转,一般与cmp连用,用以判断两数是否相等。jz的另一种写法就是je,je=jump if equal,jz和je的作用是完全一样的。
JZ是累加器A判零条件转移指令。

3.1、OFFSET是将数值回送变量或标号的偏移地址值. 2.LEA是将数值回送变量或标号的有效地址值.3.SEG,汇编程序将回送变量或标号的段地址值. 4、LEA BX,LIST5、MOV BX,OFFSET LIST6、可以看出,LEA和OFFSET这两条指令在功能上是相同的,BX寄存器都可得到符号地址LIST的值,而且此时MOV指令的执行速度会比LEA指令更快。但是,OFFSET只能与简单的符号地址相连,而不能和诸如LIST[SI]或[SI]等复杂操作数相连。因此,LEA指令在取得访问变量的工具方面是很有用的。

实验三、建立运行汇编语言程序

实验目的:
1.掌握汇编语言程序格式及其它命令的作用。
2.掌握汇编、连接、运行汇编程序的全过程,并能检查修改程序简单错误。
实验内容:
1.编写程序,比较两个字符串STRINGl和STRING2所含的字符是否相同。若相同,则显示’Match’;否则,显示’No match’。
2.编辑、汇编、连接这个汇编语言源程序,形成.EXE文件。
3.通过DEBUG调试运行该可执行文件,查看运行结果。
实验主要步骤:
1.根据要求编制汇编源程序。
参考程序如下:
DATA SEGMENT
STRINGl DB ‘Move the cursor backward.’
STRING2 DB ‘Move the cursor backward.’
MESSl DB ‘Match.’,13,10,‘$’//mess1是变量名,db是类型,后面的是内容

MESS2 DB ‘NO Match!’,13,10,‘$’
DATA ENDS
PROG SEGMENT
ASSUME CS:PROG,DS:DATA,ES:DATA//

这是段赋值语bai句是一条指令,du一般放置zhi在代码段第一的位置,只有dao的段赋值语句是建zhuan立段shu寄存器,段名为不具备分配功能之间的关系,比如,你已经创建了几个部分,你怎么知道它是一个代码段,这是这一说法的数据段,因为段名可以任意取,你可以把代码的代码段,也可以是其他的名字,这句话他们建立的关系
程序段开头控制程序在cs 段内数据在ds 段内

START:MOV AX,DATA
MOV DS,AX
MOV ES,AX
…… ;在此补充程序代码
mov es,ax
lea si, string1
lea di, string2
cld
mov cx,25
repz cmpsb
jz match
lea dx,mess2
jmp disp
match: lea dx,mess1
disp: mov ah,09
int 21h

MOV AH, 4CH
INT 21H
PROG ENDS
END START
2.使用记事本或其它字处理软件(Edit.exe)编辑该源文件。
3.使用Masm、Link程序汇编、连接该文件,形成可执行的.EXE文件。
参考步骤如下:
(1)调用全屏幕编辑程序EDlT建立ASM文件。
C>EDIT
输入实验内容1的源程序并以SAMPLE.ASM为文件名将文件存盘。
(2)用汇编程序MASM 对源文件SAMPLE.ASM 汇编并产生目标文件SAMPLE.OBJ。
C>MASM SAMPLE
如汇编指示有错误,则需重新调用编辑程序修改程序中的错误,直至汇编通过为止。
(3)用连接程序LINK产生执行文件SAMPLE.EXE。
C>LINK SAMPLE
(4)执行程序。
可直接从DOS状态执行程序。
C>SAMPLE
显示器上显示出程序的运行结果。
Match.
4.也可以使用Debug调试运行这个.EXE文件,并查看运行结果。对实验内容修改两个字符串的内容,使它们互不相同,再观察程序的运行结果。
5.写出实验报告。

知识点

汇编程序格式:
https://blog.csdn.net/algzjh/article/details/72843294

汇编从键盘输入的指令应该怎么写?
1.输入单个字符
mov ah,01h
int 21h

2.输入字符串
mov ah,0ah
int 21h

实验四、循环程序设计

https://zhidao.baidu.com/question/510357950.html?qq-pf-to=pcqq.c2c
实验目的:
1.加深对循环程序的理解。
2.能构造出正确的循环结构并能实现较复杂的算法。
实验内容:
1.编制程序,要求如下:从键盘接收一个四位的16进制数,在终端上显示与它等值的二进制数。
实验主要步骤:
1.根据要求,画出程序框图,写出汇编源代码。
参考程序如下:
CODE SEGMENT
ASSUME CS:CODE
Begin: MOV BX,0 ;用于存放四位的16进制数
MOV CH,4
MOV CL,4
INPUT: SHL BX,CL ;将前面输入的数左移4位
MOV AH,1 ;从键盘取数
INT 21H
CMP AL,30H ;<0吗?
…… ;在此补充程序代码
STOP: MOV AH, 4CH
INT 21H
CODE ENDS
END Begin
2.上机编辑源程序,并汇编、连接、调试运行,查看结果。
3.写出实验报告。
1

code segment
assume cs:code
start: mov bx,0
mov ch,4
mov cl,4
s0: mov ah,1 ;键盘输入4个16进制数
int 21h
cmp al,39h ;判断是0~9还是A~H,若是数字减30H,否则还要减07H
jbe next ;jbe当低于等于时转移
sub al,07hnext: sub al,30h
shl bx,cl
add bl,al ;转换后的数据存入BX,每存一次左移4位
dec ch
jnz s0 ;输入完则控制显示
mov cx,16s1: mov dl,0
rol bx,1 ;循环左移1位,最高位移入CF
adc dl,30h ;加30H后可得该位的ASCII码.
mov ah,02h
int 21h
loop s1
mov ax,4c00h
int 21h
code ends
end start

2

BEGIN: MOV BX, 0 ;用于存放四位的16进制数
MOV CH, 4
MOV CL, 4
INPUT: SHL BX, CL ;将前面输入的数左移4位
MOV AH, 1 ;从键盘取数
INT 21H
CMP AL, 30H ;<0吗?
JB INPUT ;不是‘0~F’的数重新输入
CMP AL, 39H ;是‘0~9’吗?
JA AF ;不是,转‘A~F’的处理
AND AL, 0FH ;转换为:0000B~1001B
JMP BINARY
AF: AND AL, 11011111B ;转换为大写字母
CMP AL, 41H ;又<A吗?
JB INPUT ;不是‘A~F’的数重新输入
CMP AL, 46H ;>F吗?
JA INPUT ;不是‘A~F’的数重新输入
AND AL, 0FH ;转换为:1010B~1111B //规律
ADD AL, 9
BINARY: OR BL, AL ;将键盘输入的数进行组合
DEL CH
JNZ INPUT
DISPN: MOV CX, 16 ;将16位二进制数一位位地转换成ASCII码显示
DISP: MOV DL, 0
ROL BX, 1
RCL DL, 1
OR DL, 30H
MOV AH, 2 ;进行显示
INT 21H
LOOP DISP
STOP: RET

实验五

https://wenku.baidu.com/view/bb3e1505a0116c175e0e4869.html?qq-pf-to=pcqq.c2c

《汇编语言》上机实验内容//理解相关推荐

  1. 计算机实验报告要求,计算机上机实验内容及实验报告要求

    一.<软件技术基础>上机实验内容 1.顺序表的建立.插入.删除. 2.带头结点的单链表的建立(用尾插法).插入.删除. 二.提交到个人10m硬盘空间的内容及截止时间 1.分别建立二个文件夹 ...

  2. 计算机上机计划,计算机上机实验内容及实验报告总结计划要求-20210711144121.doc-原创力文档...

    第 PAGE 页码 页码页 / 总合 NUMPAGES 总页数 总页数页 计算机上机实验内容及实验报告要求 一.<软件技术基础>上机实验内容 1.次序表的成立.插入.删除. 2.带头结点的 ...

  3. 计算机科学与技术第2次上机实验,天大计算机科学与技术学院—汇编语言—上机实验报告302...

    <汇编语言>实验报告(三) 年级:2011 班级:学号:姓名: 一.实验题目 请用子程序结构编写如下程序:从键盘输入一个二位十进制数的月分数(01-12),然后显示出相应的英文缩写名. 二 ...

  4. 微型计算机原理上机实验改错,北京理工大学微机原理汇编语言上机实验题

    实验一 请在数据段中定义两个数,要求编写程序分别计算出这两个数的和.差.积.商,并用Debug 的相关命令查询计算结果. (略) 实验二 内存自TABLE开始的连续16个单元中存放着0-15的平方值, ...

  5. 数据库原理上机实验内容报告代码

    --创建数据表 create table stu_info( stu_id char(10) not null constraint pk_stu_id primary key,--主键 name n ...

  6. 初中生计算机课程教案,初中信息技术上机课题【初中信息技术课上机实验教学】...

    [摘要]信息技术教育是一项面向未来的现代化教育,是培养学生信息意识.普及计算机知识和提高科学文化素质的重要途径. [关键词]实用信息;直观性;积极性;创新性 [中图分类号]G632 [文献标识码]A ...

  7. C++语言程序设计上机指导(二级),C++语言程序设计上机实验及学习指导(第2版)...

    该书是作者编写的另一本理论教材<C++程序设计教程第3版>(机械工业出版社)的配套教材.既可用作大学各专业学习C++语言的初学者的实践教材,又可用作全国或江苏计算机等级考试二级C++语言的 ...

  8. 合肥工业大学2021汇编语言程序设计上机实验一

    实验一  基本汇编程序设计 实验目的 1.熟悉在PC机上建立.汇编.连接.调试和运行8086/8088汇编语言程序的过程: 2.掌握基本汇编语言程序设计方法. 3.熟悉DOSBOX下运行dos程序方法 ...

  9. Java语言程序设计 上机实验2 掌握Java的基本语言成分和流程控制语句。 掌握Java中数组的使用,理解引用数据类型。 掌握String类的使用。...

      Java语言程序设计 上机实验2 实验目的: 掌握Java的基本语言成分和流程控制语句. 掌握Java中数组的使用,理解引用数据类型. 掌握String类的使用. 实验内容: 注:标(*)为选做内 ...

最新文章

  1. 分布式版本控制工具:git与Mercurial(zz)
  2. Android 9.0 内核编译实战(以一加6为例)
  3. 操作系统:操作系统知识点总结
  4. iOS AVAudioSession 配置(录音完声音变小问题)
  5. android view xml,如何将View添加到XML布局android
  6. 关于epoll,select,poll的理解
  7. 从钱龙数据中读取股票权息信息导入到数据库
  8. 数据操纵:SELECT, INSERT, UPDATE, DELETE
  9. HTML多行代码搞定微信8.0的炸裂特效!C/C++怎么能输
  10. 中青杯数学建模竞赛是什么级别的比赛_2018年中青杯全国大学生数学建模竞赛...
  11. 解决Windows远程桌面连接工具连接不上远程操作系统的问题
  12. 高德地图——货车导航
  13. 爬虫模拟登陆强智教务系统
  14. 基于全基因组的基因家族分析的初尝试
  15. 有哪些好用的智能写作工具?
  16. 给ACCESS2003加密码和去掉密码
  17. python快速找到列表中出现最多的元素
  18. Netfilter源码分析(1)(ZT)
  19. 【教学】手写汉字识别_单个汉字鼠标手写识别
  20. 光立方原理讲解_电工基础知识——光电耦合器的分类、工作原理和检测以及应用...

热门文章

  1. 2019重大信息安全事件_公安部通报“净网2019”专项行动典型案例-新华网
  2. 有源器件与无源器件的区别
  3. FL Studio 20官方版 水果音乐编辑软件
  4. mysql in 排序 无数据混乱_解决 mysql in 查询排序问题
  5. 通信网络底层知识梳理
  6. 【操作系统】Operating System Conceptions第一章知识整理总结
  7. selenium+testng二之following-sibling使用WebDriverWait
  8. 2021云栖大会【视觉AI平台与生态论坛】线上直播等你来~
  9. 【MicroPython ESP32】machine.Pin类函数以及参数详解
  10. 复工证明怎么写 企业复工证明模板