1、微机原理实验答案汇编 1 题目:编程将(AX)2387、(BX)192FH、(CX)9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。CODE SEGMENTASSUME CS:CODESTART:MOV AX,2387MOV BX,192FHMOV CX,9256CMP AX,BXJAE NEXT1XCHG AX,BXNEXT1:CMP AX,CXJAE NEXT2XCHG AX,CXNEXT2:CMP BX,CXJAE NEXT3XCHG BX,CXNEXT3:MOV AH,4CHINT 21HCODE ENDSEND START2 题目:编程将(BX)
2、8600H、(CX)3489H、(DX)9235按有符号数由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。;CODE SEGMENTASSUME CS:CODESTART:MOV BX,8600hMOV CX,3489HMOV DX,9235CMP BX,CXJGE NEXT1XCHG BX,CXNEXT1:CMP BX,DXJGE NEXT2XCHG BX,DXNEXT2:CMP CX,DXJGE NEXT3XCHG CX,DXNEXT3:MOV AH,4CHINT 21HCODE ENDSEND START3 题目:在数据段中定义如下数据:32,34,89H,,编程将以上数
3、据按有符号数进行排序,并将程序和结果记录下来。DATA SEGMENTNUM DB 32,34,89HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATSTART:MOV AX,DATAMOV DS,AX ;初始化DSLEA BX,NUM ;取有效地址到BX,以便访问要排序的数MOV AL,BXCMP AL,BX+1JGE NEXT1 ;若第一个数大则跳转,否则将第一个与第二个数交换XCHG AL,BX+1MOV BX,ALNEXT1:CMP AL,BX+2JGE NEXT2;若第一个数大则跳转,否则将第一个与第三个数交换XCHG AL,BX+2MOV BX,
4、ALNEXT2:MOV AL,BX+1;将第二个和第三个数比较CMP AL,BX+2JGE NEXT3;若第二个数大则跳转,否则将第二个与第三个数交换XCHG AL,BX+2MOV BX+1,ALNEXT3:MOV AH,4CHINT 21HCODE ENDSEND START4 题目:在数据段中定义如下数据:99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。 data segmentnum db 99h,25h,86hdata endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds
5、,ax lea bx,num mov al,bx cmp al,bx+1 jae next1 xchg al,bx+1 mov bx,al next1:cmp al,bx+2 jae next2 xchg al,bx+2 movbx,alnext2:mov al,bx+1 cmp al,bx+2 jae next3 xchg al,bx+2 mov bx+1,alnext3: mov ah,4ch int 21hcode endsend start 5 题目:(AL)=86H,(AH)=34H,(BL)=78H,编程将以上数据按有符号数进行排序,上机调试出程序,并将程序和结果记录下来。code
6、 segmentassume cs:codestart: mov al,86h mov ah,34h mov bl,78h cmp al,ah jae next1 xchg al,ahnext1: cmp al,bl jae next2 xchg al,blnext2: cmp ah,bl jae next3 xchg ah,blnext3: mov ah,4ch int 21hcode endsend start6 题目:中断向量为:1234:5678H,编程将此中断向量写入类型0所在的中断向量表,上机调试出程序,并将程序和结果记录下来。(直接用MOV 指令写入即可)code segment
7、assume cs:code,ds:codestart:xor ax,ax mov ds,ax mov bx,0 mov cl,2 shl bx,cl mov word ptrbx,5678h mov word ptrbx+2,1234h mov ah,4ch int 21hcode endsend start7 题目:中断向量为:3456:6678H,编程将此中断向量写入类型60H所在的中断向量表,上机调试出程序,并将程序和结果记录下来。(直接用MOV 指令写入即可)CODE SEGMENTASSUME CS:CODE,DS:CODESTART:XOR AX,AXMOV DS,AX ;初始化
8、DS,中断向量表在0段MOV BX,60HMOV CL,2SHL BX,CL ;让中断类型化左移两位,以便实现乘以4作为中断向量地址MOV WORD PTR BX,5678HMOV WORD PTR BX+2,1234HMOV AH,4CHINT 21HCODE ENDSEND START8 题目:中断向量为:编程将中断向量类型60H所对应的中断向量从中断向量表中取出来分别放在ES和DI中,上机调试出程序,并将程序和结果记录下来。(直接用MOV 指令即可) CODE SEGMENTASSUME CS:CODE,DS:CODESTART:XOR AX,AXMOV DS,AX ;初始化DS,中断向
9、量表在0段MOV BX,60HMOV CL,2SHL BX,CL ;让中断类型化左移两位,以便实现乘以4作为中断向量地址MOV DI,WORD PTR BXMOV ES,WORD PTR BX+2MOV AH,4CHINT 21HCODE ENDSEND START9 题目:中断向量为:编程将中断向量类型21H所对应的中断向量从中断向量表中取出来分别放在SI和BP中,上机调试出程序,并将程序和结果记录下来。(直接用MOV 指令即可)code segmentassume cs:code,ds:codestart:xor ax,ax mov ds,ax mov bx,21h mov cl,2 sh
10、l bx,cl mov si, word ptrbx mov bp,word ptrbx+2 mov ah,4ch int 21hcode endsend start 10 题目:中断向量为:编程将中断向量类型45H所对应的中断向量从中断向量表中取出来分别放在DI和BP中,上机调试出程序,并将程序和结果记录下来。(直接用MOV 指令即可)code segmentassume cs:code,ds:codestart:xor ax,ax mov ds,ax mov bx,45h mov cl,2 shl bx,cl mov di, word ptrbx mov bp,word ptrbx+2 m
11、ov ah,4ch int 21hcode endsend start 11 题目:利用实验箱中的8255并口芯片实现1个发光二极管的闪烁。io8255a equ 288hio8255b equ 28bhio8255c equ 28ahcode segmentassume cs:codestart: mov dx,28bh mov al,80h out dx,al mov cx,5disp: mov al,03h out dx,al push cx mov cx,10hdelay: loop delay pop cx mov al,02h out dx,al loop disp mov ah,
12、4ch int 21hcode endsend start 12 题目:在交通灯实验中请使用8255的C口 按位置1/置0 的功能实现如下现象: 南北路口的绿灯、东西路口的红灯同时亮30秒左右。io8255a equ 288hio8255b equ 28bhio8255c equ 28ahcode segmentassume cs:codestart: mov dx,28bh mov al,80h out dx,aldisp: mov al,0bh out dx,al mov al,05h out dx,al mov cx,2000hde1: mov di,9000hde0: dec di j
13、nz de0 loop de1 mov dl,0ffh ;判断是否有按键 mov ah,06h int 21h mov ah,4ch int 21hcode endsend start 13 .题目:在交通灯实验中,请使用8255的C口 按位置1/置0 的功能实现如下现象:东西路口的黄灯闪烁5次。;设8255的CS片选地址接280H-287H;PC1接黄色发光二极管CODE SEGMENTASSUME CS:CODESTART:MOV DX,28bHMOV AL,80HOUT DX,AL ;8255初始化MOV CX,5DISP:MOB AL,03HOUT DX,AL ;PC1通过控制端口置位
14、,点亮黄灯PUSH CX ;暂时保存CX值,因为下面的循环要用到MOV CX,100HDELAY:LOOP DELAY ;延时循环,可以调节POP CXMOV AL,02HOUT DX,AL ;PC1通过控制端口清零,熄灭黄灯LOOP DISP ;总共循环5次,黄灯亮灭5次,即闪烁5次MOV AH,4CHINT 21HCODE ENDSEND START14. 题目:利用8255A的PC7产生负脉冲:io8255a equ 288hio8255b equ 28bhio8255c equ 28ahcode segmentassume cs:codestart: mov dx,28bh mov a
15、l,80h out dx,al mov cx,10disp: mov al,03h out dx,al push cx mov cx,10hdelay: loop delay pop cx mov al,02h out dx,al loop disp mov ah,4ch int 21hcode endsend start15. 题目:在使用8个开关控制8个LED的实验中,请利用8255的A口 作为输入端口,C口作为输出端口实现原来的实验现象。io8255a equ 288hio8255b equ 28bhio8255c equ 28ahcode segment assume cs:codes
16、tart: mov dx,io8255b ;设8255为C口输出,A口输入 mov al,90h out dx,alinout: mov dx,io8255a ;从A口输入一数据 in al,dx mov dx,io8255c ;从C口输出刚才自A口 out dx,al ;所输入的数据 mov dl,0ffh ;判断是否有按键 mov ah,06h int 21h jz inout ;若无,则继续自a口输入,c口输出 mov ah,4ch ;否则返回 int 21hcode ends end start16. 题目:在交通灯实验中,请使用8255的C口 按位置1/置0 的功能实现如下现象:南北
17、路口的红灯、东西路口的绿灯同时亮30秒左右。 io8255a equ 288hio8255b equ 28bhio8255c equ 28ahcode segmentassume cs:codestart: mov dx,28bh mov al,80h out dx,aldisp: mov al,0fh out dx,al mov al,01h out dx,al mov cx,2000hde1: mov di,9000hde0: dec di jnz de0 loop de1 mov dl,0ffh ;判断是否有按键 mov ah,06h int 21h mov ah,4ch int 21h
18、code endsend start17. 题目:在交通灯实验中,请使用8255的C口 按位置1/置0 的功能实现如下现象:南北路口的黄灯闪烁5次。io8255a equ 288hio8255b equ 28bhio8255c equ 28ahcode segmentassume cs:codestart: mov dx,28bh mov al,80h out dx,al mov cx,5disp: mov al,0ch out dx,al push cx mov cx,10hdelay: loop delay pop cx mov al,0bh out dx,al loop disp mov
19、 ah,4ch int 21hcode endsend start 18. 题目: 在模/数转换器实验中,实现以下条件下的A/D转换,模拟量的输入通道:IN1;A/D转换器的地址:2B8H;显示结果中不出现大写字母。CODE SEGMENTASSUME CS:CODESTART:XOR AX,AXMOV DX,2B9H ;2B8H为IN1的地址 OUT DX,AL ;启动A/D转换NOPNOPIN AL,DXMOV BL,AL; 暂时保存读入的值,因为后面显示时会修改AL的值MOV DL,ALMOV CL,4ROL DL,CL ;将要显示的高四位移到低四位去AND DL,0FH ;将高四位清掉
20、,目的显示原读入数据的高四位,即当前DL中的低四位ADD DL,30HCMP DL,39HJBE NEXTADD DL,27H ;若是十六进制数A-F,则加27H,显示对应小写字母NEXT:MOV AH,02HINT 21H ;显示A/D转换结果的高四位MOV DL,BLAND DL,0FHADD DL,30HCMP DL,39HJBE NEXT1ADD DL,27H ;若是十六进制数A-F,则加27H,显示对应小写字母NEXT1:MOV AH,02HINT 21H ;显示A/D转换结果的低四位MOV AH,4CHINT 21HCODE ENDSEND START 19. 题目:利用可编程计数
21、定时器8253A的计数器0和计数器2,输出100Hz的的信号,连接必要的连线,编写初始化程序。上机调试出程序,并将程序记录下来。 CODE SEGMENTASSUME CS:CODESTART:MOV DX,283HMOV AL,00010110B;计数器0的模式字,只写低八位,工作方式3,计数初值为二进制OUT DX,AL ;写计数器0的工作模式字MOV AL,100MOV DX,280HOUT DX,AL ;写计数器0的计数初值,二进制,只写低八位MOV DX,283H;此句新添加,对计数器2的初始化模式字应写入到控制端口MOV AL,10010110B;计数器2的模式字,只写低八位,工作
22、方式3,计数初值为二进制OUT DX,AL ;写计数器2的工作模式字MOV AL,100MOV DX,282HOUT DX,AL ;写计数器2的计数初值,二进制,只写低八位,至此已完成初始化MOV AH,4CHINT 21HCODE ENDSEND START20. 题目:利用可编程计数定时器8253A的计数器1和计数器2,输出50Hz的的信号,连接必要的连线,编写初始化程序。上机调试出程序,并将程序记录下来。code segmentassume cs:codestart:mov dx,283h mov al,01010110b out dx,al mov al,200 mov dx,281h
23、 out dx,al mov al,10010110b out dx,al mov al,200 mov dx,280h out dx,al mov ah,4ch int 21hcode endsend start 21. 用A命令汇编一条INT 21H 指令,用命令T单步执行该指令, 比较指令执行前后CS和IP、堆栈指针SP及堆栈内容变化情况。提示:注意21H这个中断类型号 与中断向量地址、中断向量的关系,注意执行中断时要压入堆栈保护的内容:FR、CS、IP22. 用命令A汇编下列程序段 ,用命令T 跟踪执行,判断程序段能否完成指定功能。程序段完成将DS:2000H开始的 5 个字节内存内容
24、相加,并把相加的结果存放在 DS:2005H 和 DS:2006H 内存单元中,注意:要考虑进位。MOV CX,5 MOV AL,0 MOV BX,2000H next: ADD AL,BX INC BX DEC CX LOOP next ; (CX)-1 (CX), (CX)0转nextMOV BX,AL 答案:MOV CX,5 MOV AL,0 MOV BX,2000HCLC ;应加清进位命令 MOV AH,0 ;2008年12月份修改next: ADD AL,BX ;原先为ADD命令 ADC AH,0INC BX DEC CX ;这一句是多余的,应删除掉,因为loop里面隐含了CX=CX
25、-1 LOOP next ; (CX)-1 (CX), (CX)0转nextMOV BX,AL ;保存和MOV AL,0ADC AL,0 ;将进位加到AL中MOV BX+1 ,AH;保存进位23. 编写完整的汇编语言程序,实现两个双字的加法,假设第一个操作数是10008423H,放在2000H处,第二个操作数是2007F00H,放在了3000H处。DATA SEGMENTORG 2000HNUM1 DD 10008423HCNUM DB ? ;存放进位标志ORG 3000HNUM2 DD 2007F00HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAST
26、ART:MOV AX,DATAMOV DS,AX ;初始化DSLEA BX,NUM1 ;取有效地址到BX,以便访问要排序的数LEA SI,NUM2MOV AX,WORD PTR BXADD AX,WORD PTR SIMOV WORD PTR BX,AXMOV AX,WORD PTR BX+2ADC AX,WORD PTR SI+2MOV WORD PTRBX+2,AXMOV AL,0ADC AL,0MOV BYTE PTR BX+4,AL ;保存进位原先方括号内为BX+3MOV AH,4CHINT 21HCODE ENDSEND START24. 编写完整的汇编语言程序,实现:把“Hello
27、, Liaocheng University”传送到另外一个段的内存单元处,注意:不准使用movsb/movsw指令。DATA SEGMENTSTR1 DB Hello, Liaocheng UniversityLENT DB ?DATA ENDSEXTRA SEGMENTSTR2 DB 30 DUP (?)EXTRA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:EXTRASTART:MOV AX,DATAMOV DS,AX ;初始化DSMOV AX,EXTRAMOV ES,AXLEA SI,STR1 ;取有效地址到BX,以便访问要排序的数LEA DI,
28、STR2MOV CX,LENT-STR1LPTRANS:MOV AL,SIMOV ES:DI,ALINC SIINC DILOOP LPTRANSMOV AH,4CH INT 21HCODE ENDSEND START25. 用D命令查看中断向量表, 查找int 17h对应的中断向量,并把中断向量修改为:1234H:5678H。code segmentassume cs:code,ds:codestart:xor ax,ax mov ds,ax mov bx,17h mov cl,2 shl bx,cl mov word ptrbx,5678h mov word ptrbx+2,1234h m
29、ov ah,4ch int 21hcode endsend start 26. 编写完整的汇编语言程序,把内存3000H:2000H起30个字节数据传送到内存 2000H:1000H 开始处。data segmentdata endscode segmentassume cs:code,ds:datastart: mov ax,3000h mov ds,ax mov si,2000h mov ax,2000h mov es,ax mov di,1000h mov cx,30a1: mov al,si mov es:di,al inc si inc di loop a1 mov ah,4ch int 21hcode endsend start27. 编写完整的汇编语言程序,实现:显示字符串“Hello World!”,并利用d
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1