微机实验报告

时间:2024.5.2

第一次实验

1. 写出完成下列功能的指令序列

(1)传送20H到AL寄存器 MOV AL , 20H

(2)将(AL)*2 MOV AL , 02H MUL AL

(3)传送25H到BL寄存器 MOV BL , 25H

(4)(AL)*BL MUL BL

问最后结果(AX)=?

微机实验报告

AX=0940H

2. 分别写出完成下列指令要求的指令

(1)将BX的低4位清零 AND BX , F0H

(2)将AX的高4位置1 OR AX , F0H

(3)将DX的低4位取反; XOR DX , 0FH

(4)将CX的中间八位清零 AND CX , 0FF0H

(5)将AX中与BX中的对应位不相同的位均置1 XOR

微机实验报告

AX , BX

3.上机运行下面指令序列,分析运行后(AX)=?

mov ax ,4312

mov cl , 8

sar ax ,cl

dec ax

mov cx ,8

mul cx

微机实验报告

ax=210.9h

4. 4.设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300-304H连续单元装入0AH 0BH 0CH 0DH 0EH。在DEBUG状态下送入下面的程序,并用单步执行的方法,分析每条指令原源地址的形成过程?当数据传送完毕时,AX中的内容是什么?

微机实验报告

8.编程:求两个数的平均值。这两个数分别放在X单元和Y单元中,而平均值放在Z单元中。即Z=(X+Y)/2

data segment

x db 2

y db 6

z db ?

data ends

code segment

assume cs:code, ds;data

start:

mov ax, data

mov ds,ax

mov al, x

mov ah,0

add al,y

adc ah,0

mov bl,2

div bl

mov z,al

mov ah,4ch

int 21h

code ends

end start

微机实验报告

9.输入下面源程序,并对程序进行会变,连接,调式并说明程序的功能。

data segment

number dw 0168h

data ends

code segment

assume cs;code, ds: data

org 0100h

start:

mov ax, data

mov ds, ax

mov dx,0

mov bx, 0001h

mov di, 8000h

mov si, 0

mov ax, number

mov cx, 16

next;

test ax, bx

jz continue

or dx, di

inc si

continue:

rol bx, 1

ror di, 1

loop next

mov ah,4ch

int 21h

code ends

微机实验报告

end start

1. 编写程序: 求1+2+3+…..+100的和 data segment

number db 01h

data ends

code segment

assume cs:code , ds:data

start:

mov ax , data

mov ds , ax

mov ax , data

mov bx , number

mov ax , 0

mov cx , 64h

next:

add ax ,bx

inc bx

loop next

mov ah , 4ch

int 21h

code ends

end start

2.在内存中tab为首的地方存有1-9的平方值,从键盘输入一个数(1-9),将该数存入X单元,立方值存入XXX单元中

data segment

tab db 0,1,4,9,16,25,36,49,64,81

x db 10dup(?)

xxx db 10dup(?)

data ends

code segment

assume cs:code ,ds: data

start:

mov ax ,data

mov ds , ax mov ax , data

mov cx ,09h

next:

mov ah , 1

int 21h

and ah ,0fh

mov bx ,ah

mov si , offset tab

mov sp , offset x

mov di , offset xxx

mov dx , byte ptr[bx+si]

mov al, bl

mul dx

mov [bx+di] ,ax

mov [sp+bx] , bx

loop next

mov ah , 4ch

微机实验报告

int 21h

code ends

end start

微机实验报告

第二次实验

顺序程序设计

从键盘输入两个1位十进制数,求这两个数的和,并将结果显示在屏幕上 data segment

infor1 db 'please input the first data (<10):$'

infor2 db 0ah,0dh,'please input the second data (<10):$'

infor3 db 0ah,0dh,'the result is:$'

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov dx,offset infor1

mov ah,9

int 21h

mov ah,1

int 21h

and al,0fh

mov ah,00000000000000000000

mov bl,al

mov dx,offset infor2

mov ah,9 int 21h

mov ah,1 int 21h

and ax,000fh add al,bl aaa

or ax,3030h push ax

mov dx,offset infor3 mov ah,9 int 21h

pop ax

mov dl,ah push ax

mov ah,2 int 21h

pop ax

mov dl,al mov ah,2 int 21h

mov ah,4ch int 21h

code ends

end start

微机实验报告

1.从键盘输入0-9中任意一个自然数,将其立方值在屏幕上显示出来 data segment

number db 'please input one data (<10):$'

result db 0ah,0dh,'cube result is :$'

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov dx,offset number

mov ah,9

int 21h

mov ah,1

int 21h

and ax,000fh

mov bx,ax

mul bl

mul bl

mov cl,64h

div cl

or al,30h

push ax

mov dx,offset result

mov ah,9

int 21h

pop ax

mov dl,al

push ax

mov ah,2

int 21h

pop ax

mov cl,0ah

mov al,ah

mov ah,0

div cl

or ax,3030h

mov dl,al

push ax

mov ah,2

int 21h

pop ax

mov dl,ah

mov ah,2

int 21h

mov ah,4ch

int 21h

code ends

end start

微机实验报告

分支程序设计

1.某程序可从键盘接收命令(0-5),分别专项6个子程序,子程序入口地址分别为p0-p5,编制程序,用跳转表实现分支结构程序设计,记录实验结果

data segment

message db 'please input key (0-5):$'

crmessage db 0ah,0dh,'$'

errormessage db 'you hit error key !',0ah,0dh

db 'please try again(0-5):$'

message0 db 'you hit the key 0',0ah,0dh,'$'

message1 db 'you hit the key 1',0ah,0dh,'$'

message2 db 'you hit the key 2',0ah,0dh,'$'

message3 db 'you hit the key 3',0ah,0dh,'$'

message4 db 'you hit the key 4',0ah,0dh,'$'

message5 db 'you hit the key 5',0ah,0dh,'$'

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov ah,9

lea dx,message

int 21h

tryagain:

mov ah,1

int 21h

mov bl,al

mov ah,9

mov dx,offset crmessage int 21h

cmp bl,'0'

jz key0

cmp bl,'1'

jz key1

cmp bl,'2'

jz key2

cmp bl,'3'

jz key3

cmp bl,'4'

jz key4

cmp bl,'5'

jz key5

error:

mov ah,9

mov dx,offset errormessage int 21h

jmp tryagain

key0:

lea dx,message0 mov ah,9

int 21h

jmp exit

key1:

lea dx,message1 mov ah,9

int 21h

jmp exit

key2:

lea dx,message2 mov ah,9

int 21h

jmp exit

key3:

lea dx,message3

mov ah,9 int 21h jmp exit key4:

lea dx,message4 mov ah,9 int 21h jmp exit key5:

lea dx,message5 mov ah,9 int 21h

exit:

mov ah,4ch int 21h code ends

微机实验报告

end start

第三次实验

循环程序设计

1. 从自然数1开始累加,直到累加和大于1000为止,统计被累加的自然数的个数,并把统计的个数送入N单元,把累加和送入SUM单元。

data segment

n dw ?

sum dw ?

x db 'n is :$'

y db 0Ah,0Dh,'sum is :$'

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov ah,9

mov dx,offset x

int 21h

mov ax,0

mov bx,0

mov cx,0

mov dx,0

again:

add bx,1

add ax,bx

add cx,1

cmp ax,3e8h

jbe again

mov n,cx

mov sum,ax

mov si,ax

mov ax,cx

mov bl,10

div bl

mov bh,ah

mov dl,al

call zg

mov dl,bh

call zg

mov ah,9

mov dx,offset y

int 21h

mov ax,si

mov dx,0

mov bx,1000 div bx mov bx,dx mov dl,al call zg mov ax,bx mov bl,100 div bl mov bh,ah mov dl,al call m mov al,bh mov ah,0 mov bl,10 div bl mov bh,ah mov dl,al call zg mov dl,bh call zg

mov ah,4ch int 21h zg proc or dl,30h mov ah,2 int 21h ret m endp code ends end start

微机实验报告

子程序设计

2.编制计算n个(n<=50续偶数之和(2+4+6...)的程序。 data segment

buf db 10

db ?

db 10 dup(?)

data ends

code segment

main proc far

assume cs:code ,ds:data

start:

mov ax,data

mov ds,ax

mov ah,0ah

mov dx,offset buf

int 21h

mov cl,buf+1

mov ch,0

mov si,offset buf+2

mov ax,0

again:

mov bl,10

mul bl

sub byte ptr [si],30h

add al,[si]

adc ah,0

inc si

loop again

call qh call xs

mov ah,4ch int 21h ret

main endp

qh proc near mov cx,ax mov ax,0 mov dx,0 again1: add dx,2 add ax,dx loop again1 ret qh endp

xs proc near mov dx,0 mov bx,1000 div bx mov bx,dx mov dl,al call p

mov ax,bx mov bl,100 div bl mov bh,ah mov dl,al call p mov al,bh mov ah,0 mov bl,10 div bl mov bh,ah mov dl,al call p mov dl,bh call p ret

xs endp

p proc near

or dl,30h

mov ah,2

int 21h

ret

p endp

code ends

微机实验报告

end start

第四次实验

PC机内部8259中断实验

编写中断处理程序,要求主程序运行时,设10秒响一次。同时屏幕上显示信息“the bell is ring!”

data segment

count dw 1

mess db 'the bell is ring!',0dh,0ah,'$'

data ends

stack segment

db 100 dup (?)

stack ends

code segment

main proc far

assume cs:code,ds:data,ss:stack

start:

mov ax,stack mov ss,ax push ds sub ax,ax push ax mov ax,data mov ds,ax mov al,1ch mov ah,35h int 21h push es push bx push ds

mov dx,offset ring mov ax,seg ring mov ds,ax mov al,1ch mov ah,25h int 21h pop ds

mov al,10110110b out 43h,al mov ax,533h out 42h, al mov al,ah out 42h,al

in al,21h and al,0feh out 21h,al sti

d:

mov ah,0 int 16h cmp al,1bh jnz d

pop dx pop ds mov al,1ch mov ah,25h int 21h

ret

main endp

ring proc near push ds push ax push cx push dx mov ax,data mov ds,ax sti

dec count jnz exit

mov dx,offset mess mov ah,09 int 21h

mov dx,2000h in al,61h and al,0fch

sound:

xor al,03h out 61h,al mov cx,9600h

wait1:

loop wait1 dec dx

jnz sound mov count,91

exit:

cli

pop dx

pop cx

pop ax

pop ds

iret

ring endp code ends end start

微机实验报告

第五次实验

外部8259中断实验

编写一实验程序,使用实验装置提供的中断源,完成按键中断响应。每产生一次按键中断,向显示器输出一个字符“The is a 8259 inturrupt!”。

data segment

message db 'The is a 8259 inturrupt!',0ah,0dh,'$'

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

cli

mov al,0dh

mov ah,35h

int 21h

push es

push bx

push ds

mov ax,seg int_proc

mov ds,ax

mov dx,offset int_proc mov al,0dh mov ah,25h int 21h

pop ds

in al,0a1h

and al,0fbh out 0a1h,al sti

mov al,00110111b mov dx,3003h out dx,al

mov ax,5000 mov dx,3000h out dx,al

mov al,ah

out dx,al

waitt:

mov ah,01h int 16h

jz wait

mov ah,0

int 16h

cmp al,1bh jnz waitt

in al,0a1h

or al,4h

out 0a1h,al

pop dx

pop ds

mov al,0dh mov ah,25h int 21h

mov ah,4ch int 21h

int_proc proc

push ax

push ds

mov ax,data

mov ds,ax

sti

mov dx,offset message

mov ah,9

int 21h

cli

mov al,20h

mov dx,0a0h

out dx,al

mov al,20h

out 20h,al

pop ax

pop ds

iret

int_proc endp

code ends

end start

第六次实验

8255A并行接口实验

1.使8255的端口A口为输出,B口为输入,完成拨动开关到数据灯的数据创送。 code segment

assume cs:code

start:

mov dx,3003h

mov al,10000010b

out dx,al

mov dx,3001h

in al,dx

mov dx,3000h

out dx,al

mov ah,4ch

int 21h

code ends

end start

2.1使8255的B口为输出,实现8位数据灯左移循环显示,单行。

code segment

assume cs:code

start:

mov dx,3003h

mov al,10000000b

out dx,al

mov dx,3001h

mov al,01111111b

l:

out dx,al

mov cx,3000h

a:

mov bx,2000h

b:

dec bx

jnz b

loop a

ror al,1

jmp l

mov ah,4ch

int 21h

code ends

end start

2.2使8255的B口为输出,实现8位数据灯左移循环显示,两行。 code segment

assume cs:code

start:

mov dx,3003h

mov al,10000000b

out dx,al

l:

mov dx,3000h

call xu

mov cx,3000h

a:

mov bx,2000h

b:

dec bx

jnz b

loop a

mov dx,3001h

call xu

jmp l

mov ah,4ch

int 21h

xu proc near

mov cx,8

mov al,01111111b

out dx,al

ll:

push cx

mov cx,3000h

c:

mov bx,2000h

d:

dec bx

jnz d

loop c

pop cx

ror al,1

out dx,al

loop ll

mov al,11111111b

out dx,al

ret

xu endp

code ends

end start

3.使8255的A口节4个开关,K3~K0,B口接一个七段LED显示器,用来显示4个开关所拔通的16进制数0~F,开关都合上时,显示0,都断开时显示F。 data segment

f db 3fh,6h,5bh,4fh,66h,6dh,7dh,7h,7fh,67h,77h,0ffh,39h,0bfh,79h,71h

data ends

code segment

assume ds:data,cs:code

start:

mov dx,3003h

mov al,10010000b

out dx,al

mov dx,3000h in al,dx

mov bx,ax

mov al,byte ptr f[bx] mov dx,3001h out dx,al

mov ah,4ch int 21h

code ends end start

更多相关推荐:
微机实验报告

微机实验报告实验名称KeilC的使用与汇编语言上机操作一任务要求实验目的熟悉KeilC环境通过在KeilC环境下调试字节拆分合并程序数据块清零程序加法程序掌握汇编语言程序的调试方法加深对BCD码ASCII码堆栈...

微机实验报告

微机原理与接口技术实验报告姓名张楠乔学号10213030班级自动化1004指导教师周永华实验一交通灯控制实验一实验目的通过并行接口8255实现十字路口交通灯的模拟控制进一步掌握对并行口的使用二实验内容实验内容如...

微机实验报告~最新

实验一DEBUG的启动及其基本命令的使用一实验目的掌握DEBUG的基本命令及其功能二实验操作步骤6设堆栈指针SP20xxHAX3000HBX5000H请仿照例程的格式编一程序段将AX和BX的内容进行交换请用堆栈...

微机实验报告

实验一汇编语言上机操作训练比较字符串一实验目的1学习程序设计的基本方法和技能2熟练掌握汇编语言设计编写调试和运行二实验内容和要求1汇编语言程序上机操作方法编写一程序比较两个字符串STRING1和STRING2所...

东南大学微机实验报告(二)

东南大学《微机实验及课程设计》实验报告实验二、汇编语言程序设计姓名:学号:专业:实验室评定成绩:审阅教师:实验目的:进一步熟悉汇编语言的编辑、宏汇编、链接和运行的基本概念熟练掌握动态调试程序TD/DEBUG的常…

微机原理实验报告

微机原理与应用课程实验报告实验分工报告人同组人实验时间20xx1210课程设计一题目要求1在数据段首址为0100H开始的内存区1按从大到小的顺序顺次存入二进制数150共16个字节的数据2将上述源区内容传送到目的...

微机原理实验报告

微机原理实验报告实验一两个多位十进制数相加的实验一实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程二实验内容将两个多位十进制数相加要求被加数和加数均以ASCII码形...

微机实验报告第二次

微机实验报告1可编程定时器计数器8254实验11实验目的了解计数器的硬件连接方法及时序关系掌握8254的各种模式的编程及其原理用示波器观察各信号之间的时序关系12实验原理图可编程定时器计数器8254原理图13实...

微机实验报告

实验11实验目的及要求已知数组A包含15个互不相等的整数数组B包含20个互不相等的整数试编制一程序把既在A中又在B中出现的整数存放于数组C中2实验步骤题目要求将A和B中同时出现的数字放入C中则需要两个嵌套的循环...

微机实验报告5

微机原理与应用实验报告实验序号实验5实验项目名称用DEBUG验证并熟悉8086指令系统1234567

微机实验报告

微机原理与与接口技术实验报告学院应用物理与材料学院专业电子信息技术光电工程班级学号11060439学生姓名庞建富实验日期指导老师成绩评定五邑大学计算机学院制表1实验一一实验名称系统认识实验二实验目的1掌握TD系...

华工微机实验报告

微机系统与接口实验电子与信息学院电类联合班何俊实验二将ASCII码表示的十进制数转换为二进制数1将ASCII码表示的十进制数转换为二进制数DATASEGMENTORG3500HNUM1DB5DUP0ORG351...

微机实验报告(32篇)