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...