微机编程实验答案整理

发布 2022-09-04 23:33:28 阅读 3479

1、可编程定时器计数器8253(一)

ioport equ 0d400h-0280h

io8253a equ ioport+283h

io8253b equ ioport+280h

code segment

assume cs:code

start: mov al,14h ;设置8253通道0为工作方式2,二进制计数。

mov dx,io8253a

out dx,al

mov dx,io8253b ;送计数初值为0fh

mov al,0fh

out dx,al

lll: in al,dx读计数初值。

call disp ;调显示子程序。

push dx

mov ah,06h

mov dl,0ffh

int 21h

pop dx

jz lll

mov ah,4ch ;退出。

int 21h

disp proc near ;显示子程序。

push dx

and al,0fh ;首先取低四位。

mov dl,al

cmp dl,9判断是否<=9

jle num若是则为'0'-'9',ascii码加30h

add dl,7否则为'a'-'f',ascii码加37h

num: add dl,30h

mov ah,02h ;显示。

int 21h

mov dl,0dh ;加回车符。

int 21h

mov dl,0ah ;加换行符。

int 21h

pop dx

ret子程序返回。

disp endp

code ends

end start

2、可编程定时器计数器(二)

ioport equ 0d400h-0280h

io8253a equ ioport+280h

io8253b equ ioport+281h

io8253c equ ioport+283h

code segment

assume cs:code

start:mov dx,io8253c ;向8253写控制字。

mov al,36h ;使0通道为工作方式3

out dx,al

mov ax,1000 ;写入循环计数初值1000

mov dx,io8253a

out dx,al ;先写入低字节。

mov al,ah

out dx,al ;后写入高字节。

mov dx,io8253c

mov al,76h ;设8253通道1工作方式2

out dx,al

mov ax,1000 ;写入循环计数初值1000

mov dx,io8253b

out dx,al ;先写低字节。

mov al,ah

out dx,al ;后写高字节。

mov ah,4ch ;程序退出。

int 21h

code ends

end start

3、加法。data segment

data1 db2','6','8','5','9空格用来存放最高位进位,'$是dos功能调用int 21h中9号功能要求的要显示字符串的结束标志。

data2 db1','4','7','6','4','0dh,0ah0dh,0ah,'$中0dh和0ah分别是回车和换行的ascii码。

data ends

stack1 segment para stack 'stack1'

db 100 dup (?

stack1 ends

code segment

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

start:

mov ax,data

mov ds,ax

mov ax,stack1

mov ss,ax

lea dx,data1 ;等价于mov dx,offset data1

mov ah,09h

int 21h

lea dx,data2

mov ah,09h

int 21h

mov di,5

mov si,5

mov cx,5

mov ah,0

next1:

mov al,data2[si]

add al,data1[di]

aaaor al,30h ;调整为ascii码。

mov data1[di],al

dec di

dec si

dec cx

jcxz exit ;cx=0则转移。

jmp next2

next2:

mov al,data1[di]

add al,ah

mov data1[di],al

mov ah,0

jmp next1

exit:lea dx,data1

mov ah,09h

int 21h

mov ah,4ch ;返回dos

int 21h

code ends

end start

4、乘法。data segment

x db '1','2','3','4存放被乘数。

y db2','3','4','5','0dh,0ah,'$存放乘数。

z db 8 dup(0)

db 0dh,0ah,'$存放结果。

data ends

stack1 segment para stack 'stack1'

db 100 dup (?

stack1 ends

code segment

assume cs:code,ds:data,ss:stack1,es:data ;字符串比较需用。

main proc far

start:

mov ax,data

mov ds,ax

mov es,ax

mov ax,stack1

mov ss,ax

lea dx,x

mov ah,9

int 21h

lea dx,y

mov ah,9

int 21h

mov di,4 ;乘数指针。

nextout外循环。

mov cx,4

mov si,3 ;被乘数指针。

nextin内循环。

mov al,x[si]

mov bl,y[di]

and al,0fh

and bl,0fh

mul bl

aamcall adds

dec si

loop nextin

微机原理实验答案

1 题目 编程将 ax 2387 bx 192fh cx 9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。code segment assume cs code start mov ax,2387 mov bx,192fh mov cx,9256 cmp ax,...

微机实验答案8 8255实验

实验八 8255并口控制器实验。8.1 实验目的。1 掌握8255的工作方式及应用编程。2 掌握8255的典型应用电路接法。8.2 实验设备。pc微机一台 td pit 实验系统一套。8.3 实验内容。1 基本输入输出实验。编写程序,使8255的b口为输出,c口为输入,完成拨动开关到数据灯的数据传输...

实验1编程环境 答案

c语言 上机实验一。学号姓名。实验目的 1.熟悉visual c 6.0 简称vc 6.0 的语言集成编译环境 2.掌握c语言程序的上机步骤。实验内容 1.熟悉vc 6.0的编译环境 参考第370页附录a 建议 事先建立一个特定的文件夹,专门用于保存你的c程序。例如,在e盘中新建文件夹 vc pro...