当前位置:文档之家› 微机原理-实验一-汇编语言-冒泡排序

微机原理-实验一-汇编语言-冒泡排序

微机原理-实验一-汇编语言-冒泡排序
微机原理-实验一-汇编语言-冒泡排序

微机原理实验报告

班级:XXXXX

姓名:XXXX

学号:20XXXX

XXXXX大学

信息科学与技术学院

信息工程系

实验一汇编语言程序设计-(具体题目)

一、实验目的(根据实际情况修改):

1、熟悉MASM编译环境,了解程序的汇编方法;

2、熟悉常用汇编指令,学习汇编程序设计方法;

3、学习汇编语言的调试过程,通过调试过程认识CPU执行程序的方式;

4、了解冒泡法原理,学习多重循环的编程方法。

二、实验内容:

编写程序,用冒泡法实现将数据段内9,8,7,6,5,4,3,2,1按照由小到大的顺序重新排列。

三、程序流程图和程序代码

1、流程图

2、代码与注释(代码不能和指导书完全一样,写出注释,写出寄存器尤其是DS的值)

data segment

buf1 db 8,7,6,5,4,3,2,1

data ends

code segment

assume cs:code,ds:data

start: mov ax,data //传送数据段data

mov ds,ax

mov dx,7 //dx放外循环7次

L3: mov cx,dx //cx放内循环7次

lea si,buf1 //将db里的数据传送到si

L2: mov al,[si]

cmp al,[si+1] //比较[si]与[si+1]

jb L1 //[si]<[si+1],跳转到L1

xchg al,[si+1] //[si]>[si+1],两两交换

mov [si],al

L1: inc si //si减1

loop L2 //循环L2

dec dx //外循环减1,没减到0则跳转到L3 jnz L3 //入内循环,计数初值

mov ah,4ch

int 21h

code ends

end start

四、调试过程及遇到的问题

1、程序执行截图

2、调试用到的命令

-U命令:查看数据段地址;

-d命令:查看运行前后存储器内容;

-g命令:运行程序;

-t命令:查看运行前后寄存器和存储器内容。

3、遇到的问题及解决办法

问题:运行程序后,数据1在存储器地址末尾没变。解决方法:暂未解决!

五、思考题

1、n个数冒泡法排序共需要多少次循环?

答:n(n-1)/2次。

2、循环嵌套时总循环次数和内外循环次数是哪种数学关系?编写内外循环嵌套的双重循环程序,实现100次内循环,300次外循环。

答:总循环次数=内循环次数*外循环次数;

六、心得体会

通过实际模拟操作,加深了对CPU的理解,更好的理解编程语言,本次实验较为简单,我独立按时完成。在试验的编程过程中,弄清了DOSBox的使用方法,以及冒泡法排序的计算。实验过程遇到了程序调试和代码不熟的问题,在同学帮助下,弄懂了每行代码的作用,经调试,发现挺简单的。因此,我了解了在程序执行过程中,DS寄存器的值是根据实际数据段的地址分配的,并且不能和代码段重复。

微机原理-实验一-汇编语言-冒泡排序

微机原理实验报告 班级:XXXXX 姓名:XXXX 学号:20XXXX XXXXX大学 信息科学与技术学院 信息工程系

实验一汇编语言程序设计-(具体题目) 一、实验目的(根据实际情况修改): 1、熟悉MASM编译环境,了解程序的汇编方法; 2、熟悉常用汇编指令,学习汇编程序设计方法; 3、学习汇编语言的调试过程,通过调试过程认识CPU执行程序的方式; 4、了解冒泡法原理,学习多重循环的编程方法。 二、实验内容: 编写程序,用冒泡法实现将数据段内9,8,7,6,5,4,3,2,1按照由小到大的顺序重新排列。 三、程序流程图和程序代码 1、流程图 2、代码与注释(代码不能和指导书完全一样,写出注释,写出寄存器尤其是DS的值)

data segment buf1 db 8,7,6,5,4,3,2,1 data ends code segment assume cs:code,ds:data start: mov ax,data //传送数据段data mov ds,ax mov dx,7 //dx放外循环7次 L3: mov cx,dx //cx放内循环7次 lea si,buf1 //将db里的数据传送到si L2: mov al,[si] cmp al,[si+1] //比较[si]与[si+1] jb L1 //[si]<[si+1],跳转到L1 xchg al,[si+1] //[si]>[si+1],两两交换 mov [si],al L1: inc si //si减1 loop L2 //循环L2 dec dx //外循环减1,没减到0则跳转到L3 jnz L3 //入内循环,计数初值 mov ah,4ch int 21h code ends end start 四、调试过程及遇到的问题 1、程序执行截图

华电微机原理与技术汇编语言题目及答案

一微机原理与接口技术汇编题目 (1)数据块传送 1、将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。 2、将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中。 提示: 1、指定数据的起始地址:(如果不指定起始地址,则起始地址为0000H) DATA SEGMENT ORG 2000H DB 1,,2,3,4,5,6,7,8,9,10 ; DB定义字节数据 ORG 3000H DB 10 DUP(0); 预留10个单元存放结果,初值预定义为0 DATA ENDS 定义的存单元为:

2、定义字数据命令为:DW DATA1 SEGMENT DW 1,,2,3,4,5,6,7,8,9,10 ; DW定义字数据DATA1 ENDS 一个字为两个字节,在存中低位在前,高位在后。

(2)查表 1、已知0~15的平方值表,查表求X(X是0到15 间任一数)的平方值,送到Y单元,用两种方法。 2、已知0~255的平方值表,查表求X的平方值,送到Y单元。 提示: 0到15的平方表,每个平方值为一个字节; 0到255的平方表,每个平方值为2个字节;调试程序,平方表中的数据定义几个就行,目的是程序正确即可。 一个字为两个字节,在存中低位在前,高位在后。

(3)计算 1、计算多字节数据67788H与99AABBCCDDEEFF00H的和。 2、计算8字节的BCD码十进制数67788H与43322H的和 3、计算10个字数据的和(数据自己定义)。 提示; 1、多字节数据在存中存放,低位在前,高位在后 DAT1 DB 88H,77H,66H,55H,44H,33H,22H,11H DAT2 DB 00H,0FFH,0EEH,0DDH,0CCH,0BBH,0AAH,99H DAT3 DB 9 DUP(0) 2、BCD十进制加法 二进制加法指令: ADD BCD十进制加法: ADD

汇编语言实现十个数的排序

DATAS SEGMENT DATA0 DB'Please input a numbers (0-65535):','$' DATA1 DB' over flow input again:','$' DATA2 DB'The num you have put is:',0ah,0dh,'$' DATA3 DB'After exchange the num is:',0ah,0dh,'$' DATA4 DB' ','$' DATA DW 10 DUP(?) DATAS ENDS STACKS SEGMENT DW 256 DUP(?);此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DA TAS,SS:STACKS ;/****************************************/ ;-----------程序开始------------ START: MOV AX,DA TAS MOV DS,AX MOV SI,0 MOV CX,10 ;----------循环输入------------ L: CALL INPUT ADD SI,2 CALL NEWLINE LOOP L MOV DX,OFFSET DATA2 MOV AH,9 INT 21H ;-------输入后显示---------- MOV CX,10 MOV DI,0 AGAIN: CALL PRINT CALL SPACE ADD DI,2 LOOP AGAIN ;----------排序-------------

MOV CX,9 MOV DI,0 LOOP0: CALL SORT ADD DI,2 LOOP LOOP0 CALL NEWLINE MOV DX,OFFSET DATA3 MOV AH,9 INT 21H ;----------交换后显示------------- MOV CX,10 MOV DI,0 AGAIN0: CALL PRINT CALL SPACE ADD DI,2 LOOP AGAIN0 ;----------返回系统-------------- EXIT: MOV AH,4CH INT 21H ;/**************************************/ ;------------输入函数-------- INPUT PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX ;----------提示信息---------- MOV DX,OFFSET DATA0 MOV AH,9 INT 21H MOV BX,0 ;BX存放十进制数 CLC MOV DX,0

微机原理与汇编语言复习题及参考答案

、选择题 : 1. 2. 3. 中南大学现代远程教育课程考试复习题及参考 答案 微型机原理与汇编语言 设AL=0A8H CX=2 CF=1,执行RCL AL , CL 指令后,AL 中的值为 A. 51H B. A3H C. 47H D. 0C5H 下述指令的执行结果是 MOV AL , 0C2H AND AL , 0F0H A.AL=40H B.AL=20H 完成对CL 寄存器的内容乘以 A.ROL CL , 1 B.MUL 4 ROL CL , 1 C.AL=0C0H D.AL=0E0H 4 的正确操作是 C.SHL CL SHL CL ,2 ,CL ,1 D.MOV CL ,1 SHL CL BH 中的数一定为奇数,应执行的指 C. XOR BH ,01H D. TEST 无论BH 中原有的数是奇数或偶数,若要使 A. ADD BH , 01H B. OR BH , 01H 假设(AL )= 37H ,( BL )= 95H ,执行指令 IMUL BL 后(AX )= A. 0E903H B. 2003H 下面的数据传送指令中,错误的操作是 A. MOV SS:[BX+DI] , 1000H C. MOV WORD PTR[BX], 1000H 7. CPU 要访问的某一存储单元的实际地址称 4. 5. 6. C. 0DBBH D. 2008H B. MOV DX D. MOV DS ,1000H ,2000H A .段地址 B.偏移地址 C.物理地址 8. 某存储单元的物理地址是 12345H,可以作为它的段地址有 A . 2345H B . 12345H C . 9. 计算机能直接识别的的语言 A .汇编语言 B .机器语言 10. 下列指令中操作数在代码段中的是 A . MOV AL,25H B . ADD AH,BL C . D.逻辑地址 12340H D . 1234H C.咼级语言 D.低级语言 INC DS:[25] D . CMP AL,BL 11. 直接、间接、立即三种寻址方式指令的执行速度,由决至慢的排序为 A .直接、立即、间接 C.立即、直接、间接 12. 若栈顶的物理地址是 A . 2010211 B B .直接、间接、立即 D .不一定 2010011, 当执行完指 令 CALL AX 后, . 2010111 13. 当执行完下列指令序列后,标志位 MOV AX,OC126H MOV BX,5AB7H SUB AX,BX A . 0, 0 B . 0, 1 14. JMP BX 的目标地址偏移量是() A . SI 的内容 B . SI C . 200FFH CF 和 OF 的值是 . 1, 0 D O 所指向的内存字单元之内容 C . IP+SI 的内容 D . IP+[SI] 15. 指令MOV AX,10[BX]的源操作数的寻址方式是 A .基址寻址 B .寄存器寻址 C.变址寻址 D .寄存器相对寻址 16. 指出下列哪个数据在汇编语言中是非法的。 A . 19BH+25D B . 25+AL C . 108-102Q D . 101B*OABH 17. 用来存放即将执行的指令的偏移地址的寄存器是 A . SP B . IP C . BP BH , ( 01H 栈顶的物理地址是( D . 200FEH ( . CS

微机原理实验报告-冒泡排序

一、实验目的 (1)学习汇编语言循环结构语句的特点,重点掌握冒泡排序的方法。 (2)理解并掌握各种指令的功能,编写完整的汇编源程序。 (3)进一步熟悉DEBUG的调试命令,运用DEBUG进行调试汇编语言程序。 二、实验内容及要求 (1)实验内容:从键盘输入五个有符号数,用冒泡排序法将其按从小到大的顺序排序。(2)实验要求: ①编制程序,对这组数进行排序并输出原数据及排序后的数据; ②利用DEBUG调试工具,用D0命令,查看排序前后内存数据的变化; ③去掉最大值和最小值,求出其余值的平均值,输出最大值、最小值和平均值; ④用压栈PUSH和出栈POP指令,将平均值按位逐个输出; ⑤将平均值转化为二进制串,并将这组二进制串输出; ⑥所有数据输出前要用字符串的输出指令进行输出提示,所有数据结果能清晰显示。 三、程序流程图Array (1)主程序:MAIN

(2)冒泡排序子程序: SORT

四、程序清单 NAME BUBBLE_SORT DATA SEGMENT ARRAY DW 5 DUP(?) ;输入数据的存储单元 COUNT DW 5 TWO DW 2 FLAG1 DW 0 ;判断符号标志 FLAG2 DB 0 ;判断首位是否为零的标志 FAULT DW -1 ;判断出错标志 CR DB 0DH,0AH,'$' STR1 DB 'Please input five numbers seperated with space and finished with Enter:','$' STR2 DB 'The original numbers:','$' STR3 DB 'The sorted numbers:','$' STR4 DB 'The Min:','$' STR5 DB 'The Max:','$' STR6 DB 'The Average:','$' STR7 DB 'The binary system of the average :','$' STR8 DB 'Input error!Please input again!''$' DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,ES:DATA START: PUSH DS AND AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H ;9号DOS功能调用,提示输入数据 INT 21H CALL CRLF ;回车换行 REIN: CALL INPUT ;调用INPUT子程序,输入原始数据CMP AX,FAULT ;判断是否出错, JE REIN ;出错则重新输入 LEA DX,STR2 MOV AH,09H ;9号DOS功能调用,提示输出原始数据 INT 21H CALL OUTPUT ;调用OUTPUT子程序,输出原始数据 CALL SORT ;调用SORT子程序,进行冒泡排序 LEA DX,STR3 MOV AH,09H ;9号DOS功能调用,提示输出排序后的数据 INT 21H CALL OUTPUT ;调用OUTPUT子程序,输出排序后的数据

微机原理与汇编语言教学大纲

《微机原理与汇编语言》课程教学大纲一、课程基本信息 二、教学目标和要求 本课程是计算机专业的专业主干课。课程以当今主流微处理器80X86为结合点,分析它的结构特点、操作原理、指令系统以及汇编语言设计的基本方法,为后续课程打下必要的基础。通过本课程的学习,要求学生掌握微型计算机的基本

工作原理、汇编语言程序设计基本方法、微型计算机接口技术、建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力。应能掌握计算机的基本工作原理及汇编语言编程的技能和技巧,养成良好的程序设计风格,为今后的工作打下必要的技术基础。 三、教学难点 重点是8086CPU内部结构,引腿信号及功能,指令系统;汇编语言程序设计;接口的基本技术,接口芯片的内部结构和工作原理。难点是CPU操作时序,各种接口芯片的控制字,模式字的设置及其含义,接口与外设子系统的硬件设计及软件编程。 四、教学内容及基本要求 第一章微型机算计概述 (2学时) 教学目标和要求:理解微型机的分类和发展概况;掌握微处理器、微型计算机和微型机系统的差别;掌握CPU的功能和组成部件;掌握计算机的基本结构。 教学重点和难点:无。 教学方式:(课堂讲授) 第一节微型计算机的特点和发展 一、微型计算机的特点 二、微型计算机的发展 第二节微型机的分类 一、微型计算机的分类 第三节微处理器、微型计算机和微型计算机系统 一、微处理器 二、微型计算机 三、微型计算机系统 第四节微型机算机的应用 一、微型计算机的应用 复习思考题: 1. 微处理器、微型计算机和微型计算机系统之间有什么不同?

2. 微型计算机采用总线结构有什么优点? 3. 数据总线和地址总线在结构上有什么不同之处? 第二章 16位和32位微处理器 ( 6学时 ) 教学目标和要求: 1、掌握:8086微处理器的编程结构,常用引腿信号的功能,8086的中断系统,总线操作及时序; 2、理解:80386的体系结构,三种工作方式,指令流水线和地址流水线,虚拟存储机制和片内两级存储管理;Pentium采用的先进技术,原理结构,技术发展。 教学重点和难点:8086微处理器的结构,内部寄存器的功能,主要的引脚信号及功能,中断响应过程,存储器组织和I/O组织。 教学方式:(课堂讲授6学时) 第一节 16位微处理器8086 (2学时 ) 一、8086的编程结构 总线接口部件和执行部件的组成及各自功能,8086总线周期的概念。 二、8086的引腿信号和工作模式 1. 最小模式和最大模式的概念 为了适应各种应用场合,在设计8086/8088CPU芯片时,使它们可以在两种模式下工作,及最小模式和最大模式。 2. 8086/8088的引腿信号和功能 8086/8088CPU有40条引腿,这里介绍在两种模式下公用的32条引腿和他们的传递方向及有效跳变。 3. 最小模式 讲述8086在最小模式下的典型配置及有关引腿信号。 4. 最大模式 讲述8086在最大模式下的典型配置及有关引腿信号。 三、8086的操作和时序 1. 系统复位和启动操作 8086/8088复位时各内部寄存器的值,复位时序,总线信号状态。

排序操作实验报告

数据结构与算法设计 实验报告 (2016 — 2017 学年第1 学期) 实验名称: 年级: 专业: 班级: 学号: 姓名: 指导教师: 成都信息工程大学通信工程学院

一、实验目的 验证各种简单的排序算法。在调试中体会排序过程。 二、实验要求 (1)从键盘读入一组无序数据,按输入顺序先创建一个线性表。 (2)用带菜单的主函数任意选择一种排序算法将该表进行递增排序,并显示出每一趟排序过程。 三、实验步骤 1、创建工程(附带截图说明) 2、根据算法编写程序(参见第六部分源代码) 3、编译 4、调试 四、实验结果图 图1-直接输入排序

图2-冒泡排序 图3-直接选择排序 五、心得体会 与哈希表的操作实验相比,本次实验遇到的问题较大。由于此次实验中设计了三种排序方法导致我在设计算法时混淆了一些概念,设计思路特别混乱。虽然在理清思路后成功解决了直接输入和直接选择两种算法,但冒泡

排序的算法仍未设计成功。虽然在老师和同学的帮助下完成了冒泡排序的算法,但还需要多练习这方面的习题,平时也应多思考这方面的问题。而且,在直接输入和直接选择的算法设计上也有较为复杂的地方,对照书本做了精简纠正。 本次实验让我发现自己在算法设计上存在一些思虑不周的地方,思考问题过于片面,逻辑思维能力太过单薄,还需要继续练习。 六、源代码 要求:粘贴个人代码,以便检查。 #include #define MAXSIZE 100 typedef int KeyType; typedef int DataType; typedef struct{ KeyType key; DataType data; }SortItem,SqList[MAXSIZE]; /*******直接插入顺序表*******/ void InsertSort(SqList L,int n) { int i,j,x; SortItem p; for(i=1;i

微机原理与汇编语言 习题

微机原理与汇编语言习题 1.ZF标志位是标志结果是否为零的,若结果为零,ZF为________,否则ZF为_______。当ZF 为1时,SF为________。 2.调用程序与子程序之间的参数传递方法有四种,即堆栈法、_______、______、______。 3.宏指令定义必须由伪指令________开始,伪指令______结束,两者之间的语句称为________。 4.三个重复前缀指令为__________、__________、________。 5.8086/8088 CPU可访问2个独立的地址空间,一个为存贮器地址空间,其大小为____个字节; 另一个为______,其大小为_______字节。 6.当_______________时,CPU便进入等待状态(Tw)。 7.最小模式系统除CPU、存储器、I/O接口和总线外,至少还应配置________、__________、 _________三种芯片部件或电路。 8.8086内部由_________和_______两部分组成,其作用分别是_______和______。 9.在汇编语言中,一个标号和过程有和两种属性。前者表明在段内转移和调用,后 者表示在段间转移和调用。 10.8086/8088的存储器是分段的,因此存储单元的物理地址是由和组合而成。 11.汇编语言源程序的扩展名是,目标程序的扩展名是,通常产生的可执行程序 的扩展名是。 12.指令操作数可以存放在指令中,也可以存放在CPU的寄存器中,大多数存放在存储器中,它们 分别被称为立即、寄存器和直接寻址方式。 13.微型计算机一般都采用总线结构,系统总线的信号线有三组,即数据总线、地址总线和 控制总线。 14.若要判断无符号数运算是否溢出,应根据CF 标志位;而判断有符号数运算是否溢出,应 根据OF 标志位。 15.8086/8088端口地址的范围是0000H ~ FFFFH。 16.汇编语言源程序中的语句有三种类型,他们是指令语句,伪指令语句和语句。 17.指令SAR可用来有符号数数除以2,而指令SHR则可用来无符号数数除以2。 18.用二进制代码组成的计算机能直接识别的语言称为机器语言。用机器指令的助记符以 及伪指令,宏指令表示的一种面向机器的语言称汇编语言,用该语言编写的程序需经过汇编程序翻译,成为计算机能直接识别并执行的程序称目标程序。 19.数据段中有以下定义: ARRAY1 EQU 16H ARRAY2 DW 16H 请指出下面两条指令源操作数的寻址方式: MOV AX, ARRAY1 ;寻址方式:立即寻址方式。 MOV AX, ARRAY2 ;寻址方式:直接寻址方式。 20.在数据段中使用字符串时,该字符串必须用括起来。当定义含有多个字符的字符串时,

微机原理实验报告冒泡排序

一、实验目的 (1)学习汇编语言循环结构语句的特点,重点掌握冒泡排序的方法。 (2)理解并掌握各种指令的功能,编写完整的汇编源程序。 (3)进一步熟悉DEBUG的调试命令,运用DEBUG进行调试汇编语言程序。 二、实验内容及要求 (1)实验内容:从键盘输入五个有符号数,用冒泡排序法将其按从小到大的顺序排序。 (2)实验要求: ①编制程序,对这组数进行排序并输出原数据及排序后的数据; ②利用DEBUG调试工具,用D0命令,查瞧排序前后内存数据的变化; ③去掉最大值与最小值,求出其余值的平均值,输出最大值、最小值与平均值; ④用压栈PUSH与出栈POP指令,将平均值按位逐个输出; ⑤将平均值转化为二进制串,并将这组二进制串输出; ⑥所有数据输出前要用字符串的输出指令进行输出提示,所有数据结果能清晰显示。 三、程序流程图Array (1)主程序:MAIN

(2)

就是 NAME BUBBLE_SORT DATA SEGMENT ARRAY DW 5 DUP(?) ;输入数据的存储单元 COUNT DW 5 TWO DW 2 FLAG1 DW 0 ;判断符号标志 FLAG2 DB 0 ;判断首位就是否为零的标志FAULT DW -1 ;判断出错标志 CR DB 0DH,0AH,'$' STR1 DB 'Please input five numbers seperated with space and finished with Enter:','$' STR2 DB 'The original numbers:','$' STR3 DB 'The sorted numbers:','$' STR4 DB 'The Min:','$' STR5 DB 'The Max:','$' STR6 DB 'The Average:','$' STR7 DB 'The binary system of the average :','$' STR8 DB 'Input error!Please input again!''$' DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,ES:DATA START: PUSH DS AND AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H ;9号DOS功能调用,提示输入数据 INT 21H CALL CRLF ;回车换行 REIN: CALL INPUT ;调用INPUT子程序,输入原始数据CMP AX,FAULT ;判断就是否出错, JE REIN ;出错则重新输入

北航计算机软件技术基础实验报告计软实验报告3——冒泡排序和快速排序

实验报告 实验名称冒泡排序和快速排序 班级 学号 姓名 成绩

#include #include #define N 20 //定义用于比较和交换计数的全局变量 static int compare, move; int main() { int data1[N], data2[N]; int i; void bubbleSort(int[20]); void quickSort(int[20], int, int); //创建两个相同的数组用于两种排序方法 for (i = 0; i

汇编语言、微机原理及接口技术期末复习试卷以及参考答案八教学文案

重庆邮电大学2006/2007学年第二学期期末考试题 微机原理与接口技术考试题(A 卷) 一、单项选择题(每题1分,共20题) 1、一般,微机系统硬件由___部分组成,包括______。 A.4,CPU、存储器、I/O设备和接口电路 B.3,存储器,控制器和显示器 C.2,运算器和显示器 D.4,存储器,运算器,显示器和键盘 2、80X86微机系统有三条总线,它们是___________。 A. 地址总线、数据总线和控制总线 B. 地址总线、信息总线和存储器总线 C. 输入总线和输出总线 D. 单总线、面向微处理器双总线和面向存储器双总线 3、80X86微机中用来指出下一条要被执行指令的偏移地址的部件是___。A.CS B.DS C.ES D.IP

4、在汇编语句MOV BL,’A’中,源操作数的寻址方式是___________。A.直接寻址B.立即寻址 C.基址寻址D.寄存器间接寻址 5、以下指令中正确的是___________。 A.MOV DS,2D00H B.MOV CL,270 C.IN AL,DX D.MOV [DI],[SI] 6、已定义数据段 DATA SEGEMENT ORG 0213H DA1 DB 15H,34H,55H ADR DW DA1 DATA ENDS 能使AX中数据为偶数的语句是() A.MOV AX,WORD PTR DA1 B.MOV AL,DA1+2

C.MOV AL,BYTE PTR ADR+1 D.MOV AX,WORD PTR DA1+2 7、已知DS=1000H,ES=2000H,SI=0300H,内存10310H开始的两个单元中存放3A4BH,内存20310H开始的两个单元中存放4C5DH,则语句LEA B X,[SI+10H] 执行后,BX的值为________。 A.3A4BH B.4C5DH C.0310H D.3D5BH 8、MOV SP,4210H PUSH AX 执行上述指令后,SP寄存器的值是() A.4211H B.420EH C.420FH D.4212H 9、下列指令中不影响进位标志CF的指令是___________。 A.SUB AX,BX B.ROL AL,1 C.INC CX D.ADD AL,BL 10、设AH=0,AL=06H,BL=09H,执行指令 ADD AL,BL

微机原理与汇编语言_实验3_循环程序设计实验汇总

微机原理与汇编语言 实验报告 姓名x x x学号xxxxxx 专业班级计科x班 课程名称微机原理与汇编语言实验日期2014.10.22 实验名称循环程序设计实验成绩 一、实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 二、实验内容 1、实验原理 (1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题 (2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数 2、实验步骤 (1)流程图 (2)实验源码 .model small .stack ;定义堆栈段 .data ;定义数据段 inf1 db "Please input a number(1-627):$" inf2 db 0ah, 0dh, "1+2+......+$" ibuf db 7, 0, 6 dup(0) obuf db 6 dup(0) .code start: mov ax, @data mov ds, ax mov dx, offset inf1 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax 中 mov ah, 09h int 21h mov dx, offset ibuf mov ah, 0Ah int 21h mov cl, ibuf+1 mov ch, 0 mov si, offset ibuf+2 mov ax, 0 loop1: mov dx, 10 mul dx and byte ptr [si], 0Fh add al, [si] 从键盘输入一个十进制数,并将其转换为二进制数,存放在AX中 开始 结束 素、、 (CX)-1=0 累加循环次数送CX(MOV CX,AX)AX清0(AX中存放累加和) BX送1(BX存放每次循环累加的数,每循环一次,BX值加1) ADD AX,BX INC BX 累加和(在AX中)转换为十进制数并 显示 Y N

大数据结构实验四题目一排序实验报告材料

数据结构实验报告 实验名称:实验四——排序 学生姓名:XX 班级: 班内序号: 学号: 日期: 1.实验要求 实验目的: 通过选择实验内容中的两个题目之一,学习、实现、对比、各种排序的算法,掌握各种排序算法的优劣,以及各种算法使用的情况。 题目1: 使用简单数组实现下面各种排序算法,并进行比较。 排序算法如下: 1、插入排序; 2、希尔排序; 3、冒泡排序; 4、快速排序; 5、简单选择排序; 6、堆排序; 7、归并排序; 8、基数排序(选作); 9、其他。 具体要求如下: 1、测试数据分成三类:正序、逆序、随机数据。 2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关 键字交换记为3次移动)。 3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微妙。 4、对2和3的结果进行分析,验证上述各种算法的时间复杂度。 5、编写main()函数测试各种排序算法的正确性。 2. 程序分析 2.1 存储结构

存储结构:数组 2.2 关键算法分析 一、关键算法: 1、插入排序 a、取排序的第二个数据与前一个比较 b、若比前一个小,则赋值给哨兵 c、从后向前比较,将其插入在比其小的元素后 d、循环排序 2、希尔排序 a、将数组分成两份 b、将第一份数组的元素与哨兵比较 c、若其大与哨兵,其值赋给哨兵 d、哨兵与第二份数组元素比较,将较大的值赋给第二份数组 e、循环进行数组拆分 3、对数据进行编码 a、取数组元素与下一个元素比较 b、若比下一个元素大,则与其交换 c、后移,重复 d、改变总元素值,并重复上述代码 4、快速排序 a、选取标准值 b、比较高低指针指向元素,若指针保持前后顺序,且后指针元素大于标准值,后 指针前移,重新比较 c、否则后面元素赋给前面元素 d、若后指针元素小于标准值,前指针后移,重新比较 e、否则前面元素赋给后面元素 5、简单选择排序 a、从数组中选择出最小元素 b、若不为当前元素,则交换 c、后移将当前元素设为下一个元素 6、堆排序 a、生成小顶堆 b、将堆的根节点移至数组的最后 c、去掉已做过根节点的元素继续生成小顶堆

微机原理与汇编语言-模拟题

《微机原理与汇编语言》模拟题 一.单选题 1.属于8086的专用(控制)寄存器有(). A.AXBXCXDX B.SPIPFLAGS C.SIDI D.以上三者都是 [答案]:B 2.有关com文件描述不正确的是(). A.可执行文件 B.没有文件信息的标题区 C.占用存储空间大 D.程序不分段入口点必须是100H [答案]:C 3.数据段中定义stringDW10dup(10dup(1),3,4),则lengthstring的值为(). A.10 B.100 C.120 D.20 [答案]:A 4.对MOV指令,不正确的是(). A.MOVAX,100H B.MOVAX,CS C.MOVBP,IP D.MOVVAR,100H [答案]:D 5.对MOV指令,正确的是(). A.MOVBL,AX B.MOVAX,CS C.MOVDS,100H D.MOVES,DS [答案]:B 6.R进制数转换成十进制的方法是(). A.权和系数乘后累加 B.降幂法 C.降幂法和除法 D.除法 [答案]:A

7.在编程时,常常将多次使用的功能用一条()来代替. A.指令 B.伪指令 C.宏指令 D.以上都不是 [答案]:C 8.属于8086的变址寄存器有(). A.AXBXCXDX B.SPBPIP C.SIDI D.以上三者都是 [答案]:C 9.不定重复汇编伪操作的指令是(). A.IRP B.IRPN C.REPT D.macro [答案]:A 10.假设程序中的数据定义PNAMEDW16DUP(?)后接着定义PLENTHEQU$-PNAME,它表示什么意义是(). A.占16字节 B.占32个字节 C.变量PNAME的长度 D.变量PNAME的地址 [答案]:B 11.操作符TYPE后可以是变量/标号/常数,回送变量或标号的类型值.其中常数回送的类型值为(). A.1 B.2 C.-1 D.0 [答案]:D 12.外部接口组成由一组”寄存器”及相关”控制电路组成”,其中存放外设和CPU传送过来的数据的寄存器是(). A.数据寄存器 B.状态寄存器 C.命令寄存器 D.以上都是

用汇编语言冒泡排序经典程序

data segment A dw 03h, 0dh, 08h, 1dh, 20h, 0fdh ;两个字节保存一个值,对应十进制的3,13,8,29,32,253 data ends code segment main proc far assume cs:code, ds:data start: push ds sub ax, ax ;ax寄存器清零 push ax mov ax, data mov ds, ax mov cx, 7 dec cx ;减1指令 loop1: ;cx=cx-1若cx!=0则继续循环 mov di, cx ;把CX寄存器的值传送到以DS寄存器(默认是DS寄存器)的内容为段值有效地址为DI 的存储单元中 mov bx, 0 loop2: mov ax, a[bx] ;把第bx个数传给ax寄存器 cmp ax, a[bx+2] ;比较第bx个数和第bx+2个数????? jle continue ;jle:小于等于则跳转,否则执行下句 xchg ax, a[bx+2] ;否则两比较数交换位置 mov a[bx], ax continue: add bx, 2 loop loop2 mov cx, di loop loop1 mov cx, 7 mov bx, 0 next: mov ax, [bx] push cx call show pop cx mov ah, 2

mov dl, ' ' int 21h add bx, 2 loop next ret main endp show: ; 显示ax里的值 mov cx, 10 cmp ax, 0 jle done div cl ;除法:被除数在DX,AX中,除数在cl中 push ax xor ah, ah ;xor实现两个操作数按位‘异或’运算,结果送至目的操作数中 call show pop dx mov dl, dh or dl, 30h ;或运算 mov ah, 2 int 21h done: ret code ends end start

“微机原理与汇编语言”期末试题.

“微机原理与汇编语言”期末试题 一、填空(每空小1分,共30分) 1.电子计算机的主要应用领域有()、()、()。 2.电子计算机的发展历程是()、晶体管时代、()、( )。 3.十进制数11.375转换为二进制数为();二进制数1101101 转换为十进制数为()。 4.十进制数7928转换为十六进制数为(), 十六进制数3A57 转换为十进制数为()。 5.十六进制数DA2B转换为二进制数为(), 二进制数 110111100101.1011转换为十六进制数为()。 6.A=+0110101,[A]反=( ),[A]补=( );B=-0110101,[B] 反=( ) ,[B] 补=( )。 7.37的BCD编码是()。 8.从功能上看,微机由中央处理器、()、外部设备、( )和()五个部分组成。 9.CPU由( )和()两部分组成。 10.程序设计的基本的结构有顺序结构、()、()。 11.中断处理的过程是保存断点、()、()、()、( )。 12.打印机是()设备,扫描仪是()设备。 二、名词解释(每小题4分,共20分) 1.随机读写存储器 2.寄存器间接寻址方式 3.控制总线 4.局部总线 5.并行传输

三、改错题(下列各小题均有错,请针对题意改正其错误,或补充其不足。 每小题2分,共18分) 1.在浮点数加减运算中,阶码与尾数作为一个整体相加减。 2.在微程序控制方式中,每一条机器指令用一条微指令解释执行。 3.若总线地址为26位,则最大访存空间为6M。 4.DMA方式是指:由DMA控制器运行I/O程序,以实现外围设备与主存之间的数据直传。 5.SUB 0FFH ,BX; 6.MOV DX,AL; 7.ADD BUF1,BUF2; 8.MOV AX, 20H[SI][DI]; 9.MOV CS,AL; 10.MOV E43H,E43H 四、程序分析与设计(每小题2分,共10分) 1.将寄存器DX的内容赋于AX寄存器。 2.将立即数8EFH传送给BX寄存器。 3.将数据段偏移地址为2FH的存储器中的提供给DX寄存器。 4.将AL寄存器内容传送给由DI寄存器指定的数据段偏移地址的存储单元。5.将字节量数据11H送入用BX和DI的基址变址寻址的主存单元。 五、问答题(共30分) 1.什么叫寻址方式?常用的寻址方式有哪些?(5分) 2.什么是变量,变量有哪些属性,如何使用这些属性?(9分) 3.比较说明中断方式与DMA方式的异同?(9分) 4.什么是有效地址?什么是物理地址?如何由有效地址求得物理地址?(7分)

微机原理实验报告-冒泡排序

WORD格式 一、实验目的 (1)学习汇编语言循环结构语句的特点,重点掌握冒泡排序的方法。 (2)理解并掌握各种指令的功能,编写完整的汇编源程序。 (3)进一步熟悉DEBUG的调试命令,运用DEBUG进行调试汇编语言程序。 二、实验内容及要求 (1)实验内容:从键盘输入五个有符号数,用冒泡排序法将其按从小到大的顺序排序。(2)实验要求: ①编制程序,对这组数进行排序并输出原数据及排序后的数据; ②利用DEBUG调试工具,用D0命令,查看排序前后内存数据的变化; ③去掉最大值和最小值,求出其余值的平均值,输出最大值、最小值和平均值; ④用压栈PUSH和出栈POP指令,将平均值按位逐个输出; ⑤将平均值转化为二进制串,并将这组二进制串输出; ⑥所有数据输出前要用字符串的输出指令进行输出提示,所有数据结果能清晰显示。 三、程序流程图 开 始(1)主程序:MAIN 初始化 键盘输入数据 调用INPUT子程序 显示输入错误 否 输入是否正确 是 显示原始数据 调用OUTPUT子程序

WORD格式 显示冒泡排序后的数据 调用SORT子程序 调用OUTPUT子程序 显示最小值Min 显示One子程序 显示最大值Max 调用One子程序 显示其余数平均值Average 调用One子程序 显示平均值二进制串Binary 调用One子程序 结束

(2)冒泡排序子程序:SORT COUNT1----外循环次数 进入COUNT2----内循环次数 i----数组下标 初始化 COUNT1=N-1 COUNT2=COUNT1 SI=0 否 Ai≥i A+1 是 Ai与A i+1两数交换 SI=SI+2 COUNT2=COUNT2-1 否 COUNT2=0? 是 COUNT1=COUNT1-1 否 COUNT2=0? 是 返回

微机原理及汇编语言作业 编程

第五大组题 5.一个32位数存放在以数据段的BUF单元开始的位置。编写子程序统计该数中含“1”的个数,并将其结果存入RSLT字节单元。 stac segment stack db 1024 dup(0) stac ends data segment RSLT db 00H ;使rslt初值为零 buf dd 12345678h ;定义buf data ends code segment 'code' assume cs:code,ds:data,ss:stac start: mov ax,data mov ds,ax mov cl ,32 call again ;调用子程序 mov ax ,4c00h int 21h gain proc ;定义过程 shr word ptr ds:[si+2],1 ;最高字逻辑右移一位,D16进入CF rcr word ptr ds:[si+0],1 ;CF移入D15,最低字右移一位进入CF nc L1 inc RSLT L1:again endp code ends end start 55.在0200H单元中有一个数x,利用移位和相加的办法,使x×10(假定x×10>255)后送回原单元。 stac segment stack db 1024 dup(0) stac ends data segment org 0200h ;将变量x的定位在0200h处 x db 56h data ends code segment 'code'

assume cs:code,ds:data,ss:stac start: mov ax,data mov ds,ax mov al,x ;把x放到al中 + xor ah,ah ;使AH=0,同时使CF=0 shl ax,1 ;AX=AL*2 mov bx,ax ;BX=AX=AL*2 shl ax,1 ;AX=AL*4 shl ax,1 ;AX=AL*4 add ax,bx mov x,al ;将ax中低八位放到x中 mov x+1,ah ;将ax中高八位放到x+1中 mov ax, 4c00h int 21h code e nds end start 75.编写子程序。将AL中的二进制数转换成对应的ASCII码(置于AL中)返回。主程序调用子程序实现上述功能。 .model small .stack .data .code start: mov ax,@data mov ds,ax mov al,28h call label1 ;调用子程序 mov ax,4c00h int 21h label1 proc and al,0fh ;只取al的低四位 or al,30h ;al高四位变成3(0~9的ASCII码是30h~39h) cmp al,39h ;是0~9还是0A~0Fh(A~F的ASCII的值是41h~46h) jbe htoend ;小于等于39h,al低4位的数值在0~9之间 add al,7 ;数值在0A~0F间,其ASCII码值还要加上7 htoend: ret ;子程序返回 label1 endp ;过程结束 end start

相关主题
文本预览
相关文档 最新文档