文档库 最新最全的文档下载
当前位置:文档库 › 微机原理编程题

微机原理编程题

微机原理编程题
微机原理编程题

1

35.

data segment

store db 4 dup(?) data ends

code segment assume ds:data,cs:code main proc far

push ds

mov ax,0

push ax

begin:mov cl,4

mov ch,4

lea bx,store next: mov dx,ax

and dl,0fh

mov [bx],dl

inc bx

shr ax,cl

dec ch

jnz next

mov al,store

mov bl,store+1

mov cl,store+2

mov dl,store+3

ret

main endp

code ends

end

36

data segment

addr db 4 dup(?) data ends

code segment assume ds:data,cs:code main proc far

push ds

mov ax,0

push ax

mov ch,4

mov cl,4

lea bx,addr

again:mov dx,ax

and dx,000fh

cmp dl,09h

ja next

add dl,30h

jmp down

next:add dl,37h

down:mov [bx],dl

inc bx

shr ax, cl

dec ch

jnz again

ret

main endp

code ends

end

37 (1)

data segment

score db 65,78,89,98,85,96,75,74,89,65,34,81

max db ?

min db ?

data ends

code segment

assume ds:data,cs:code

main proc far

push ds

mov ax,0

push ax

mov cx,12

dec cx

lea bx,score

mov al,[bx]

mov dl,[bx]

again: inc bx

cmp al,[bx]

jae chkmin

mov al,[bx]

jmp next

chkmin: cmp dl,[bx]

jbe next

mov dl,[bx]

next: dec cx

jnz again

2

mov max,al

mov min,dl

ret

main endp

code ends

end

37(2)

data segment

score db 65,78,89,98,85,96,75,74,89,65,34,81

s9 db ?

s8 db ?

s7 db ?

s6 db ?

s0 db ?

data ends

code segment

assume ds:data,cs:code

main proc far

push ds

mov ax,0

push ax

mov cx,30

lea bx,score

again:mov al,[bx]

cmp al,90

jb next1

inc s9

jmp over

next1:cmp al,80

jb next2

inc s8

jmp over

next2:cmp al,70

jb next3

inc s7

jmp over

next3:cmp al,60

jb next4

inc s6

jmp over

next4:inc s0

over:inc bx

dec cx

jnz again

ret

main endp

code ends

end

37(3)

data segment

score dw 65,78,89,98,85,96,75,74,89,65,34,81

aver db ?

data ends

code segment

assume ds:data,cs:code

main proc far

push ds

mov ax,0

push ax

mov cx,12

mov dl,12

lea bx,score

mov ax,0

again:add ax,[bx]

inc bx

inc bx

dec cx

jnz again

div dl

mov aver,al

ret

main endp

code ends

end

38

data segment

str db 'hghdgd1jdfjfd[]]]]]]]o'

data ends

code segment

assume ds:data,cs:code

main proc far

push ds

3

mov ax,0

push ax

mov cx,50

lea bx,str

again: mov al,[bx]

cmp al,30h

jb next

cmp al,39h

ja next

or dl,20h

jmp ok next: inc bx

dec cx

jnz again

and dl,0dfh ok: ret

main endp

code ends

end

39

data segment

buf db 50 dup(?) count1 db 0

count2 db 0

count3 db 0

data ends

code segment assume ds:data,cs:code main proc far

push ds

mov ax,0

push ax

lea bx,buf

input:mov ah,1

int 21h

mov [bx],al

inc bx

cmp al,13

jnz input

lea bx,buf again: mov al,[bx]

inc bx

cmp al,13

jz ok

cmp al,'0'

jb next2

cmp al,'9'

ja next1

inc count1

jmp again next1:cmp al,'A'

jb next2

cmp al,'Z'

ja next2

inc count2

jmp again next2:inc count3

jmp again ok: ret

main endp

code ends

end

微机原理课程设计报告

微型计算机技术课程设计 指导教师: 班级: 姓名: 学号: 班内序号: 课设日期: _________________________

目录 一、课程设计题目................. 错误!未定义书签。 二、设计目的..................... 错误!未定义书签。 三、设计内容..................... 错误!未定义书签。 四、设计所需器材与工具 (3) 五、设计思路..................... 错误!未定义书签。 六、设计步骤(含流程图和代码) ..... 错误!未定义书签。 七、课程设计小结 (36)

一、课程设计题目:点阵显示系统电路及程序设计 利用《汇编语言与微型计算机技术》课程中所学的可编程接口芯片8253、8255A、8259设计一个基于微机控制的点阵显示系统。 二、设计目的 1.通过本设计,使学生综合运用《汇编语言与微型计算机技术》、《数字电子技术》等课程的内容,为今后从事计算机检测与控制工作奠定一定的基础。 2.掌握接口芯片8253、8255A、8259等可编程器件、译码器74LS138、8路同相三态双向总线收发器74LS245、点阵显示器件的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程,包括需求分析、原理图设计、元器件选用、布线、编程、调试、撰写报告等步骤。 三、设计内容 1.点阵显示系统启动后的初始状态 在计算机显示器上出现菜单: dot matrix display system 1.←left shift display 2.↑up shift display 3.s stop 4.Esc Exit 2.点阵显示系统运行状态 按计算机光标←键,点阵逐列向左移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标↑键,点阵逐行向上移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标s键,点阵停止移动并显示当前字符。 3.结束程序运行状态 按计算机Esc键,结束点阵显示系统运行状态并显示“停”。 四.设计所需器材与工具 1.一块实验面包板(内含时钟信号1MHz或2MHz)。 2.可编程芯片8253、8255、74LS245、74LS138各一片,16×16点阵显示器件一片。

微机原理实验三子程序设计实验

实验三 子程序设计实验 一、实验目的 1.学习子程序的定义和调用方法。 2.掌握子程序的程序设计、编制及调用。 二、实验设备 TDN86/88教学实验系统一台 三、实验内容及步骤 1.求无符号字节序列中的最大值和最小值 设有一字节序列,其存储首址为3000H ,字节数为08H 。利用子程序的方法编程求出该序列中的最大值和最小值。实验程序及流程如下: 主程序 STACK1 SEGMENT STACK DW 64 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H CALL branch A1: JMP A1 branch: JCXZ A4 PUSH SI PUSH CX PUSH BX

子程序 实验步骤 (1)输入源程序,进行编译、链接和加载。 (2)在调试区键入E0000:3000↙,输入8个字节的数据:D9、07、8B、C5、EB、04、9D、F9。 (3)运行程序,查看结果,在调试区键入R AX↙,显示结果应为AX=F9 04,AH中为最大值,AL中为最小值。 2.数组求和 设有一字节序列(存储地址和字节数可自定义),编写程序,求出该序列的和,求和工MOV BH,[SI] MOV BL,BH A1: LODSB CMP AL,BH JBE A2 MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3 MOV BL,AL A3: LOOP A1 MOV AX,BX POP BX POP CX POP SI A4: RET CODE ENDS END START

微机原理子程序设计

实验三子程序设计 1、实验目的: (1)熟悉汇编语言的编辑、汇编、连接、运行的全过程。 (2)了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE 命令包含文件的方法。 (3)子程序设计 2.实验步骤: (1)用编辑软件记事本或EDIT 编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序TASM 汇编上述的汇编语言源程序,形成目标代码文件。 (扩展名为OBJ) (3)用连接程序TLINK连接目标代码文件,形成可执行文件。(扩展名为EXE) (4)运行可执行文件。观察执行结果,以验证其正确性。 3.实验内容: (1)从键盘上输入若干个十进制数(-32767

again1: mov ax,[si] cmp ax,[si+2] jle next1 xchg ax,[si+2] xchg ax,[si] next1: add si,2 loop again1 mov cx,di loop again2 mov ah,9 lea dx,out_message int 21h mov cx,count ;输出(升序) lea si,array again3: mov bx,[si] call write call dpcrlf inc si inc si loop again3 mov ax,4c00h int 21h INCLUDE out_B_D.ASM INCLUDE in_D_B.ASM END (2)从键盘上输入若干个十进制数(-32767

微机原理课程设计报告-数字时钟的实现(附代码)

合肥工业大学 计算机与信息学院 课程设计 课程:微机原理与接口技术设计专业班级:计算机科学与技术x班学号: 姓名:

一、设计题目及要求: 【课题6】数字时钟 1.通过8253 定时器作产生秒脉冲定时中断。在中断服务程序中实现秒、分、小时的进位(24小时制)。 2.在七段数码管上显示当前的时分秒(例如,12 点10 分40 秒显示为121040)。 3.按“C”可设置时钟的时间当前值(对准时间)。 二、设计思想: 总体思想: 1、功能概述: 实验箱连线: 本实验建立在Dais实验箱基础上完成的基本连线及程序如下: 138译码器: A,B,C,D,分别连接A2,A3,A4,GS; y0连接8253的CS片选信号; y1连接8259的CS片选信号; 8253连线: 分频信号T2接8253的CLK0; 8253的OUT0接8259的IR7; 8253的gate信号接+5V; 8259连线: 8259的数据线接入数据总线;

本程序包括显示模块,键盘扫描模块,时间计数模块,设置模块等几个模块, (1)程序运行后,LED显示000000初始值,并且开始计数 (2)按C键进行设置初始时间,考虑到第一个数只能是0,1,2,当第一个数显示2时第二个数只能显示0~4,同理下面各位应满足时钟数值的合理的取值; (3)在手动输入初始值时,按D键进行回退1位修改已设置值,连续按D键可以全部进行删除修改。 2、主程序设计 主程序中完成通过调用子程序完成对8253及8259的初始化,对8259进行中断设置。主要在显示子程序和键盘子处理程序之间不断循环,8253每一秒给8259一个刺激,当8259接受到刺激后会给CPU一个中断请求,CPU会转去执行中断子程序,而中断子程序设置成时间计数加,即完成电子表的整体设计。详细流程图见图三-1。 3、LED显示子程序设计 本程序显示部分用了6个共阳极LED作为显示管,显示程序要做到每送一次段码就送一次位码,每送一次位码后,将位码中的0右移1位作为下次的位码,从而可以实现从左到右使6个LED依次显示出相应的数字。虽然CPU每隔一定时间便执行显示程序,但只要这个时间段不太长,由于人眼的视觉作用,就可以在6个LED上同时见到数字显示。 4、键盘扫描子程序设计 本程序需要用键盘对时间的初始值进行设置,因此对键盘扫描的子程序需要满足的功能如下: 判断是否是C键,若不是就返回至主程序,若是C键就开始对时间初始值进行设置,同时因注意到第一个值不可以超过2,第一个数是2时第二数不能超过4,余下的同理要满足时间数值的取值范围呢,若不是合法输入不予反应继续等待输入。当遇到输入数值错误时可以按下D键进行删除一位重新设置;当6位初始值全部设置成功后,电子表将自动开始走表。 5、时间运算子程序设计 该子程序的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟

微机原理实验报告——分支程序设计

实验三 分支程序设计 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。 二、软硬件环境 1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 、DEBUG 、LINK 和EDIT 等应用程序。 三、实验涉及的主要知识单元 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。下面就有符号数转移指令来了解在汇编语言程序设计方法。 四、实验内容与步骤 1.实验内容 (1)编写计算下面函数值的程序: ?? ? ??<-=>=0,10,00,1x x x y 设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量的 数据 (2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。 2.实验步骤 a.实验流程图 (1)计算函数值的流程图

b.编写程序 (1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ? DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0AL 则1=Y JMP EXIT EQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDS END START

微机原理与接口技术汇编子程序涉及

试验五汇编子程序设计 一、试验目的 (1)掌握汇编子程序设计的一般方法; (2)掌握汇编子程序的调试方法; (3)掌握递归子程序设计与调试方法。 二、输入输出子程序 1、十进制数输入子程序decibin 子程序名:decibin 子程序功能:用户输入十进制数放在BX中 入口参数:无 出口参数:BX存放输入的十进制数 受影响的寄存器:AX、BX、CX、DX和标志寄存器 注意:①用户输入字符‘0’~‘9’,当输入非法字符时结束输入,如回车; ②十进制数位数可以是1位、2位等,范围0~65535。 decibin proc near mov bx , 0 newchar: mov ah , 1 int 21h mov dl , al sub al , 30h jl exit1 cmp al , 9 jg exit1 cbw xchg ax , bx mov cx , 10 mul cx xchg ax , bx add bx , ax jmp newchar exit1: ret decibin endp 2、十六进制数输入子程序hexibin 子程序名:hexibin

子程序功能:用户输入十六进制数放在BX中 入口参数:无 出口参数:bx存放输入的十六进制数 受影响的寄存器:ax、bx、cx和标志寄存器 注意:①用户输入0ah~0fh的数字时,输入大写字母‘A’~‘F’,小写字母‘a’~‘f’无效; ②子程序不能控制数的位数可能0位、1位、2位……等位数,如果输入位数大于4位,则以最新的4位十六进制数为准; ③输入字符可以按回车结束,当输入任何非法字符时也能结束数据输入。 hexibin proc near mov bx , 0 newchar: mov ah , 1 int 21h sub al , 30h jl exit cmp al , 10 jl add_to sub al , 7 cmp al , 0ah jl exit cmp al , 10h jge exit add_to: mov cl , 4 shl bx , cl mov ah , 0 add bx , ax jmp newchar exit: ret hexibin endp 3、十进制数显示子程序binidec 子程序名:binidec 子程序功能:将bx寄存器存放的数以十进制的形式显示出来 入口参数:bx存放要显示的数 出口参数:无 受影响的寄存器:ax、bx、cx、dx和标志寄存器

微机原理实验五输入与输出程序设计

实验六输入与输出程序设计 一、实验目的 1?掌握常用DOS中断调用的功能以及在应用程序中的使用方法。 2?学习键盘输入和屏幕输出的基本方法。 3?宏指令、子程序在应用程序屮的使用。 4?汇编语言程序设计的调试与完善。 二、设计指标与实验要求 1.设计内容 本实验要求设计完成:①屏幕输出提示(如〃Want in put (Y/N)? ”),若键入N则结束程序返回操作系统;键入Y则转2步;键入的是其它字母则回①步。②换行后输出提示(如"please in put a strings :”),且在该提示后键入一字符串(输入到输入缓冲区) ③换行后输出提不(如"your in putt ing is :”),在该提不后输出由②步输入的字符串。 ④换行后输出提示“Want continue (Y/N)? ” ,若键入Y则转②步;键入N则结束程序返回操作系统;其它字母则回第④步。 2 ?设计要求 ①按屏幕提示要求输入,从屏幕上获得正确结果。 ②把程序屮常用的屮断调用定义成宏指令(至少定义2个)。 ③字符串回显部分设计成子程序,可以选择用21H中断的2号或9号功能来实现,应能显示由 主程序指定的任一字符串。要注意这两种方法实现的设计过程是不同的。 采用2号功能的,子程序输入参数为“回显字符串地址”和“回显字符数”;采用 9号功能的,子程序输入参数为“回显字符串地址”。 ④屏幕的提示信息显示格式尽量做到兼顾美观。

3 .实验步骤 ①?选用合适的程序文本编辑软件编辑源程序, 并为文件取以.ASM为扩展名的文件存盘。 ②?用宏汇编软件MASM对源程序文件进行汇编,若有错误,根据提示(行号,错误类型)回源程序文件中修改。 ③?用LINK对由MASM匚编后产生的目标文件做连接,生成可执行文件;若有错误(同上)回步骤1修改源程序文件。 ④?对存在问题的程序,用CV调试程序,检察运行结果,并调试程序。 ⑤?反复验正程序的正确性。 ⑥?完善、改进所设计的程序算法、功能、界面、或性能等指标。 四、思考题 1.输入串若以指定字符(非回车)做结束标志时的输入部分应如何改写。 2.若为应用程序添加启动时的密码检验功能,密码输入时采用什么屮断功能比较合适? 3.如何为应用程序添加字母的大小写转换功能? OUTPUT MACRO MOV AH, 9 INT 21H EXDM INPUTS MACRO MOV AH, 10 INT 21H ENDM DATA SEGMENT BUF1 DB Odh, Oah,,Wa nt in put(Y/N)?$, BUF2 DB Odh,Oah, 5 please in put a stri ngs:$' BUFIN DB 20,?,20 DUP(?) BUF3 DB Odh,Oah, ' your in putt ing is:$' BUF4 DB Odh, Oah,,Wa nt contin ue(Y/N)?$,

微机原理:顺序、分支、循环、子程序设计

[公司名称] 实验二 顺序、分支、循环、子程序设计微机原理上机实验 [作者姓名] [日期]

预习报告 零、相关知识 1,LEA指令和MOV指令的区别 一、顺序结构 计算m*n-w,最终结果保存在AX 其中m=12, n=12, w=4 最终结果为AX=008CH=140D name "sequence strcture" org 100h MOV AX, 1000H MOV DS, AX MOV SI, 1000H MOV [SI], 12 MOV [SI+1], 12 MOV [SI+2], 4 MOV AL, [SI] MOV BL, [SI+1] MUL BL MOV BX, 0 MOV BL, [SI+2] SUB AX, BX HLT 二、分支结构 在DS数据段偏移地址为DATA开始的顺序80个单元中,存放着某班80个同学的微机原理考试成绩。现欲编程序统计>=90、89~70、69~60和<60分的人数,并将统计的结果存放在当前数据段偏移地址为BUFFER的顺序单元中 name “branch structure”

START: MOV DX, 0000H MOV BX, 0000H MOV CX, 80 LEA SI, DATA LEA DI, BUFFER GOON: MOV AL, [SI] CMP AL, 90 JC NEXT3 INC DH JMP STOR NEXT3: CMP AL, 70 JC NEXT5 INC DL JMP STOR NEXT5: CMP AL, 60 JC NEXT7 INC BH JMP STOR NEXT7: INC BL STOR: INC SI LOOP GOON MOV [DI], DH MOV [DI+1], DL MOV [DI+2], BH MOV [DI+3], BL HLT 三、循环结构 在DS所决定的数据段,从偏移地址BUFFER开始顺序存放100个无符号16位数。现欲编程序将这100个数按大小顺序排序(以下程序使用的是快速排序算法,也可以使用冒泡排序,嵌套两层循环) name “circle structure” LEA DI, BUFFER MOV BL, 99 NEXT0: MOV SI, DI

微机原理程序设计

XX理工大学微机原理程序设计 ----------------------------------------------------------- 实验一 实验要求: 试编写一个程序,要求比较数组ARRAY中的三个16位补码数,并根据比较结果在显示终端上显示如下信息: (1)如果三个数都不相等则显示0; (2)如果三个数有两个相等则显示1; (3)如果三个数都相等则显示2。 程序流程图:

开始 初始化 显示数组中的三个补码数 结束 显示0 显示2 显示1 i=0i=1 i=2三数两两比较并记相等的个数i 显示“请连续输入三个三位数:” 调用程序,使输入的三个三位数转换为补码形式,并分别保存在数组ARRAY 中 程序清单: DATA SEGMENT ARRAY DW 1,2,3 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,ARRAY MOV BX,ARRAY+2 MOV CX,ARRAY+4 CMP AX,BX JE L CMP BX,CX

JE L1 CMP AX,CX JE L1 MOV DL,30H JMP EXIT L: CMP BX,CX JNE L1 MOV DL,32H JMP EXIT L1: MOV DL,31H EXIT: MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 运行结果: ARRAY中三个数互不不相等: ARRAY中三个数有两个相等:

微机原理简单程序设计

一、实验目的 (1).学习汇编语言上机操作过程,汇编程序的汇编、编辑、连接、运行、DEBUG、调试方法。 (2)、加深理解汇编语言程序设计方法 (3)、学习使用DOS调用方法 二、实验内容: (1)、在内存单元TAB开始的连续10个有符号字节数据中找出最小数据并显示结果 (2)、在内存单元TAB开始的连续10个有符号字节数据中找出最大数据并显示结果 三、实验设备及环境: 1.计算机 2.MASM汇编 四、实验方案:

五、实验步骤: 1.用记事本编写源程序; 2.在“开始”—“运行”里键入“cmd”命令启动ms—dos; 3.在命令行中输入cd\masm5\回车; 4.输入masm 程序名.asm; 5.输入link 程序名; 6.输入程序名回车运行程序; 7. 更改源程序找出最大值 六、源程序: dseg segment TAB db 2H ,5H,6H,3H,7H,8H,9H,81H,,0C3H,0F4H COUNT db $-TAB dseg ends sseg segmengt stack SDAT db 50 dup(?) TOP equ length SDAT sseg ends code segment assume cs:code , ds:dseg, ss:sseg start: mov ax,dseg mov ds,ax mov ax,sseg mov ss,ax mov ax,TOP mov sp,ax

mov cx,COUNT DEC cx mov sl, OFFSET TAB mov al,[sl] NEXT: INC al cmp al ,[sl] JL L1 mov al, [al] L1 :LOOP NEXT mov bl,al mov cl,4 and al,0f0h shr al,cl or al,30h mov dl,al mov ah,2 int 21h and bl,0fh or bl,30h mov ah,2 int 21h mov ah,4ch int 21h code ends

微机原理-比赛评分系统程序设计

摘要 汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。 用汇编语言编写程序能够直接利用硬件系统的特性直接对位、字节或字寄存器、存储单元、I/O端口进行处理,同时也能直接使CPU指令系统和指令系统提供的各种寻址方式编出高质量的程序。 关键词:微机汇编端口

比赛评分系统程序设计 1初始条件及要求完成的主要内容 1.1初始条件: 用汇编语言编写程序计算某次比赛的成绩。 1.2要求完成的主要内容: (1)比赛选手人数控制在30以下; (2) 9个评委,每个评委给分范围为0~10分(整数),随机给出分数; (3)9个评委的给分中,去掉一个最高分和一个最低分,余下7位评委的平均分即为参加者的得分(精确到小数点后一位); (4)将分数在屏幕中间位置处用红色显示出来; (5)将参加比赛的选手的排名顺序显示出来; (6)撰写设计说明书及调试心得。 2设计方法与构想思路 这次课程设计中用到了汇编语言程序的四种基本结构:顺序结构、分支结构、循环结构和子程序。 顺序结构程序一般是简单程序,它是顺序执行的,无分支、无循环,也无转移,因此也称为直线程序。 分支结构程序是指程序在按指令先后的顺序执行过程中,遇到不同的计算结果值,需要计算机自动进行判断、选择,决定转向下一步要执行的程序段。 程序中的某些部分需要重复执行,设计者不可能将重复部分反复地书写,那样程序会显得很长。只要选好参数,将程序中重复执行部分构成循环结构,这样设计的程序既美观又便于修改。循环结构每次测试循环条件,当满足时,重复执行这一段程序;否则结束循环,顺序往下执行。由于循环程序需要循环准备、修改变量、结束控制等指令,执行的速度会稍慢些。 我们将一个具有特定功能的代码块定义为一个过程(或子程序)。 这次主要采用循环结构和子程序的基本结构形式,编写程序产生9个0~10的随机数,找出这9个数中的最大和最小的数,即评委给出的最高分和最低分,分别保存。

微机原理与技术实验四:子程序结构

微机原理与技术实验四:子程序结构

实验四:子程序设计 一、实验目的:掌握子程序结构,熟悉汇编上机环 境。 二、实验内容:设有数组SCORE存放学生的成绩 (0~100分),编写一个子程序统计0~59分、60~69分、70~79分、80~89分、90~100分的人数,并分别存放到SCOREE、SCORED、SCOREC、SCOREB、SCOREA单元中。编写一个主程序与之配合使用。 三、实验步骤: 1、在“轻松汇编”环境下编写、编译和生成程序; 2、进入DEBUG界面,运行程序,观察SCOREE、SCORED、SCOREC、SCOREB、SCOREA变量的值是否正确: 在DEBUG下运行程序:F9键 观察多个变量值:“Data”→“Add Watch”→“输入变量1” “Data”→“Add Watch”

“输入变量2” …… 四、流程图与源程序: DATA SEGMENT SCORE DB 80,78,45,81,90,72,60,75 SCOREE DB 0 SCORED DB 0 SCOREC DB 0 SCOREB DB 0 SCOREA DB 0 DATA ENDS STCK SEGMENT DB 10 DUP(?) STCK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STCK START: 补全程序

MOV AH,4CH INT 21H ;以下为子程序 COUNT PROC 补全程序 RET COUNT ENDP CODE ENDS END START

主程序开始 设置地址指针指向SCORE 首地址 设置循环次数=SCORE 元素个数 调成绩判断子程序 地址指针加一 循环次数减一 循环次数=0 N 返回DOS Y 子程序开始 取当前地址指针所指向的元素 当前元素<90SCOREA 加一 当前元素<80SCOREB 加一 当前元素<70SCOREC 加一 当前元素<60SCORED 加一 SCOREE 加一 子程序返回 N Y N Y N Y N Y 五、实验小结 说明:实验报告要包涵上述五项 DATA SEGMENT

微型计算机原理课程设计

微型计算机原理课程设计学院 专业 班级 学号 姓名 一、目的 结合微型计算机课程的学习,进一步巩固已学的知识,同时针对计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。学会使用屏幕编辑程序——EDIT,弄懂汇编程序的上级过程以及如何运用DEBUG软件进行汇编程序的调试。

二、内容 1.字符串的匹配 为掌握提示信息的设置方法及读取键入信息的方法。编写程序事先两个字符串的比较。如相同,则显示“MATCH”,否则,则显示“NO MATCH” 2.从键盘输入数据并显示的设计 为掌握接受键盘数据的方法,并了解将键盘数据显示时必须转化为ASCII 码的原理。编写程序,将键盘接受到的四位十六进制数据转化为等值的二进制数,再显示在终端上。 3.响铃设计 为掌握响铃的使用方法。编写程序,从键盘接受输入字符,如是数字N,则响铃N次,如果不是数字,则不响。 4.将键盘输入的小写字母转化成大写字母的设计 为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。 5. 学生成绩名次表设计 为进一步熟悉排序方法,编写程序,将100以内的30个成绩存入首址为1000H 的存储区中。1000H+i表示学号为i的学生成绩。编写程序使得在2000H开始的区域排出名次表,2000H+i为学号i的学生的名次。 编写程序如下 学生成绩名次表流程图

编写程序如下 CRLF MACROA MOV AH,02H AS MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H ENDM DATA SEGMENT

第2 章 16 位微机原理及其程序设计实验

第2 章 16 位微机原理及其程序设计实验 本章主要介绍汇编语言程序设计,通过实验来学习80X86 的指令系统、寻址方式以及程序的设计方法,同时掌握联机软件的使用。 2.1 系统认识实验 2.1.1 实验目的 掌握TD 系列微机原理及接口技术教学实验系统的操作,熟悉Wmd86 联机集成开发调试软件的操作环境。 2.1.2 实验设备 PC 机一台,TD-PITE 实验装置或TD-PITC 实验装置一套。 2.1.3 实验内容 编写实验程序,将00H~0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。 2.1.4 实验步骤 1. 运行Wmd86 软件,进入Wmd86 集成开发环境。 2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言和寄存器类型,这里我们设置成“汇编语言”和“16 位寄存器”,如图2.1、图2.2 所示。设置选择 后,下次再启动软件,语言环境保持这次的修改不变。本章选择16 位寄存器。 80X86 微机原理及接口技术实验教程西安唐都科教仪器公司 15 图2.1 语言环境设置界面 图2.2 寄存器设置界面 3. 语言和寄存器选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图2.3 所示。

默认文件名为Wmd861。 图2.3 新建文件界面 4. 编写实验程序,如图2.4 所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。 80X86 微机原理及接口技术实验教程西安唐都科教仪器公司 16 图2.4 程序编辑界面 5. 点击,编译文件,若程序编译无误,则可以继续点击进行链接,链接无误后方可 以加载程序。编译、链接后输出如图2.5 所示的输出信息。 图2.5 编译输出信息界面 6. 连接PC 与实验系统的通讯电缆,打开实验系统电源。

20套大学微机原理及程序设计试卷及答案

(答案见第70页开始)大学微机原理及程序设计试卷(一) 姓名:班级:学号:成绩: 一、填空题(共15分,每空1分) 1、十六进制数30A.5转换为二进制是_____________,转换为十进制是______________。 2、偏移量是指相对的偏移距离。 3、8088/8086系统中,不改变DS值的情况下,其数据段的最大寻址范围是_____ _KB。 4、PC总线中,IOR为低电平时,表明CPU对端口进行__________操作。 5、8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是________、 ________、________、________。 6、每条指令的执行过程中是由________、________和________等操作组成。 7、I/O端口的编址方式有________和________ 两种 二、选择题(共20分,每小题2分) 1、在机器数()中,零的表示形式是唯一的。 A、原码 B、补码 C、反码 D、原码和反码 2、若采用双符号位判断溢出,当结果的符号位为11时,表示()。 A、结果为正,无溢出 B、结果正溢出 C、结果负溢出 D、结果为负,无溢出 3、中央处理机(CPU)是指()。 A、运算器 B、控制器 C、运算器和控制器 D、运算器、控制器和主存储器 4、PSW是指令部件中()。 A、指令寄存器 B、指令译码器 C、程序计数器 D、程序状态寄存器 5、寄存器间接寻址中,操作数放在()。 A、通用寄存器 B、主存单元 C、堆栈 D、程序计数器 6、EPROM是指()。 A、随机读写存储器 B、可编程的只读存储器

微机原理实验之子程序设计

子程序设计实验 一、实验目的 1.学习子程序的定义和调试方法。 2.掌握子程序、子程序的嵌套、递归子程序的结构; 3.掌握子程序的程序设计及调试方法。 二、实验设备 PC 机一台,TD-PITE 实验装置一套。 三、实验内容及步骤 1.求无符号字节序列中的最大值和最小值 设有一字节序列,其存储首地址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。程序流程图如图4-1所示。 图4-1 程序流程图 实验程序 SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE

START: MOV AX, 0000H MOV DS, AX MOV SI, 3000H ; 数据区首址 MOV CX, 0008H CALL BRANCH ; 调用子程序 HERE: JMP HERE BRANCH PROC NEAR JCXZ A4 PUSH SI PUSH CX PUSH BX MOV BH, [SI] MOV BL, BH CLD A1: LODSB CMP AL, BH JBE A2 MOV BH, AL JMP A3 A2: CMP AL, BL JAE A3 MOV BL, AL A3: LOOP A1 MOV AX, BX POP BX POP CX POP SI A4: RET BRANCH ENDP CODE ENDS END START 实验步骤: (1)根据程序流程图编写实验程序; (2)经编译、链接无误后装入系统; (3)键入E3000命令,输入8个字节的数据,如:D9 07 8B C5 EB 04 9D F9; (4)运行实验程序; (5)点击停止按钮,停止程序运行,观察寄存器窗口中AX的值,AX应为F9 04,其中AH中为最大值,AL中为最小值; (6)反复测试几组数据,检验程序的正确性。 程序说明:该程序使用BH和BL暂存现行的最大值和最小值,开始时初始化成首字节的内容,然后进入循环操作,从字节序列中逐个取出一个字节的内容与BH和BL相比较,若取出的字节内容比BH的内容大或比BL的内容小,则修改之。当循环操作结束时,将BH送AH,将BL送AL,作为返回值,同时恢复BX原先的内容。

微机原理分支程序设计实验

2.3分支程序设计实验 2.3.1实验目的 1、掌握分支程序的设计方法。 2、掌握宏定义及宏调用的基本方法。 3、了解小写和大写字母的ASCII码表示及其转换方法。了解数字及其它字符在的ASCII码表示方法。 4、进一步掌握调试工具的使用方法 2.3.2实验预习要求 1、复习比较指令、条件转移指令的用法。 2、复习宏定义及宏调用的基本方法。 3、根据“2.3.3实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 4、程序框架中显示提示信息的指令序列用宏调用实现。 5、从“2.3.4实验习题”中任选一道题目,编写源程序,以便上机调试。 2.3.3实验内容 从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。若输入为小写字母,显示“YouInputaLowercaseLetter!”;若输入为大写字母,显示“YouInputaUppercaseLetter!”;若输入为数字,显示“YouInputaDigit!”;若输入为其它字符,显示“YouInputOtherLetter!”。 1、编程指导 数字09的ASCII码为30H39H;大写字母的ASCII码为41H5AH,小写字母的ASCII码为 61H7AH。本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的ASCII码值判 断其所属类型,并显示相应的信息。字符串显示使用功能号为09H的DOS功能调用,接收键盘输入的单个字符使用功能号为01H的DOS功能调用。 2、流程图及程序框图 (1)流程图 开始 显示提示信息“PleasePressAnyKeytoinputaletter” 及功能号为1的接收键盘输入单个字符的指令序列 Y (AL)<’0’ Y (AL)<=’9’ Y 输入的是数字,显示有关信息 (AL)<’A’ Y (AL)<=’Z’ Y (AL)<’ a’输入的是大写字母,显示信息 Y (AL)<=’z’ 输入的是小写字母,显示信息输入的是其它字符,显示信息

微机原理汇编实验-分支、循环及子程序设计实验

学生实验报告 实验课程名称:微机原理汇编实验 开课实验室:年月日 年级、专业、 班学 号 姓名成绩 实验项目 名称分支、循环及子程序设计实验 指导 教师 教 师 评 语 一、实验目的 1.学习分支程序、循环结构程序的设计和调试方法。 2.学习子程序的定义和调试方法。 3.掌握分支、循环、子程序等程序的基本结构。 二、实验原理 使用MASM汇编语言设计工具,设计简单的汇编语言程序并进行运行调试,以便掌握汇编语言设计、编写、调试和运行程序的方法。 三、实验仪器、材料 1.软件MASM5.0 2.PC微机一台 四、实验步骤 1.输入程序并检查无误,经汇编、连接后生成.EXE文件。 2.使用DEBUG命令运行以上程序。 3.反复试几组数,考察程序的正确性。 五、实验源代码 ;-------------------------------------------------

;程序名:Lab201 ;功能:实现对NUM中 -128~127 ; 的数进行负数统计 ;备注:负数的个数存放在BL中并在屏幕输出 ;------------------------------------------------- DSEG SEGMENT ;定义需要统计的各个数值,数据值不能大于127,不能小于-128 NUM DB -100,-100,1,-100,30,-10,127,89,-128,20 ;统计数据的个数 LENG EQU ($-NUM) DSEG ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV CX,LENG MOV BX,0000H MOV AX,DSEG MOV DS,AX MOV SI,OFFSET NUM AGAIN:MOV DL,[SI] CMP DL,0000H JL LITTEL JMP BIG LITTEL:INC BL ;程序结束返回DOS ADD SI,1 LOOP AGAIN JMP FINISH BIG:ADD SI,1 LOOP AGAIN JMP FINISH ;---------------------------------- ;子程序名:TRANNUM ;功能:将数值转换为数字 ; 字符输出 ;入口参数:DL ;出口参数:无 ;---------------------------------- TRANNUM PROC NEAR

微机原理编程题

微机原理编程题 分支程序设计 ①.编写一段程序,已知BUF1单元中有一带符号字节数据X, BUF2中有一带符号字节数据Y,根据以下函数关系编写程序求Z的值,结果存入RESULT单元。 Z=|X-Y| ; DATA SEGMENT BUF1 DB 05H BUF2 DB 02H RESULT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BUF1 MOV BL,BUF2 SUB AL,BL JNC GREAT NEG AL GREAT:MOV RESULT,AL EXIT: MOV AH,4CH INT 21H

CODE ENDS END START ②.编写一段程序,已知BUF单元中有一无符号字节数据据以下函数关系编写程序求丫的值,结果存入RESULT单元。X>=10; DATA SEGMENT BUF DB 8 RESULT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BUF CMP AL,10 JAE GRE MOV BL,AL ADD AL,AL ADD AL,AL ADD AL,BL JMP DONE GRE: SUB AL,5 X,假设为8,根Z=5X X<10,X-5

DONE: MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS END START ③?在内存单元BUF中存放一个带符号字节数据X,假定为-2,试根据以下函数关系编写程序求丫的值,结果存入RESULT单元。Y=1 X>0,0 X=0,-1 X<0; DATA SEGMENT BUF DB -2 RESULT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,BUF CMP AL,0 JGE L1 MOV AL,-1 JMP L3 L1:JZ L2

相关文档
相关文档 最新文档