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)=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,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。
DATA SEGMENTNUM DB 32,34,89HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATSTART:MOV AX,DATAMOV DS,AX ;初始化DSLEA BX,NUM ;取有效地址到BX,以便访问要排序的数MOV AL,[BX]CMP AL,[BX+1]JGE NEXT1 ;若第一个数大则跳转,否则将第一个与第二个数交换XCHG AL,[BX+1]MOV [BX],ALNEXT1:CMP AL,[BX+2]JGE NEXT2;若第一个数大则跳转,否则将第一个与第三个数交换XCHG AL,[BX+2]MOV [BX],ALNEXT2:MOV AL,[BX+1];将第二个和第三个数比较CMP AL,[BX+2]JGE NEXT3;若第二个数大则跳转,否则将第二个与第三个数交换XCHG AL,[BX+2]MOV [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,datamov ds,axlea bx,nummov al,[bx]cmp al,[bx+1]jae next1xchg al,[bx+1]mov [bx],alnext1:cmp al,[bx+2]jae next2xchg al,[bx+2]mov[bx],alnext2:mov al,[bx+1]cmp al,[bx+2]jae next3xchg al,[bx+2]mov [bx+1],alnext3: mov ah,4chint 21hcode endsend start5.题目:(AL)=86H,(AH)=34H,(BL)=78H,编程将以上数据按有符号数进行排序,上机调试出程序,并将程序和结果记录下来。
code segmentassume cs:codestart: mov al,86hmov ah,34hmov bl,78hcmp al,ahjae next1xchg al,ahnext1: cmp al,bljae next2xchg al,blnext2: cmp ah,bljae next3xchg ah,blnext3: mov ah,4chint 21hcode endsend start6.题目:中断向量为:1234:5678H,编程将此中断向量写入类型0所在的中断向量表,上机调试出程序,并将程序和结果记录下来。
(直接用MOV 指令写入即可)code segmentassume cs:code,ds:codestart:xor ax,axmov ds,axmov bx,0mov cl,2shl bx,clmov word ptr[bx],5678hmov word ptr[bx+2],1234hmov ah,4chint 21hcode endsend start7.题目:中断向量为:3456:6678H,编程将此中断向量写入类型60H所在的中断向量表,上机调试出程序,并将程序和结果记录下来。
(直接用MOV 指令写入即可)CODE SEGMENTASSUME CS:CODE,DS:CODESTART:XOR AX,AXMOV DS,AX ;初始化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,中断向量表在0段MOV BX,60HMOV CL,2SHL BX,CL ;让中断类型化左移两位,以便实现乘以4作为中断向量地址MOV DI,WORD PTR [BX]MOV ES,WORD PTR [BX+2]MOV AH,4CHINT 21HCODE ENDSEND START9.题目:中断向量为:编程将中断向量类型21H所对应的中断向量从中断向量表中取出来分别放在SI和BP中,上机调试出程序,并将程序和结果记录下来。
(直接用MOV 指令即可)code segmentassume cs:code,ds:codestart:xor ax,axmov ds,axmov bx,21hmov cl,2shl bx,clmov si, word ptr[bx]mov bp,word ptr[bx+2]mov ah,4chint 21hcode endsend start10.题目:中断向量为:编程将中断向量类型45H所对应的中断向量从中断向量表中取出来分别放在DI和BP中,上机调试出程序,并将程序和结果记录下来。
(直接用MOV 指令即可)code segmentassume cs:code,ds:codestart:xor ax,axmov ds,axmov bx,45hmov cl,2shl bx,clmov di, word ptr[bx]mov bp,word ptr[bx+2]mov ah,4chint 21hcode endsend start11.题目:利用实验箱中的8255并口芯片实现1个发光二极管的闪烁。
io8255a equ 288hio8255b equ 28bhio8255c equ 28ahcode segmentassume cs:codestart: mov dx,28bhmov al,80hout dx,almov cx,5disp: mov al,03hout dx,alpush cxmov cx,10hdelay: loop delaypop cxmov al,02hout dx,alloop dispmov ah,4chint 21hcode endsend start12.题目:在交通灯实验中请使用8255的C口按位置1/置0 的功能实现如下现象:南北路口的绿灯、东西路口的红灯同时亮30秒左右。
io8255a equ 288hio8255b equ 28bhio8255c equ 28ahcode segmentassume cs:codestart: mov dx,28bhmov al,80hout dx,aldisp: mov al,0bhout dx,almov al,05hout dx,almov cx,2000hde1: mov di,9000hde0: dec dijnz de0loop de1mov dl,0ffh ;判断是否有按键mov ah,06hint 21hmov ah,4chint 21hcode endsend start13 .题目:在交通灯实验中,请使用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通过控制端口置位,点亮黄灯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,28bhmov al,80hout dx,almov cx,10disp: mov al,03hout dx,alpush cxmov cx,10hdelay: loop delaypop cxmov al,02hout dx,alloop dispmov ah,4chint 21hcode endsend start15. 题目:在使用8个开关控制8个LED的实验中,请利用8255的A口作为输入端口,C口作为输出端口实现原来的实验现象。
io8255a equ 288hio8255b equ 28bhio8255c equ 28ahcode segmentassume cs:codestart: mov dx,io8255b ;设8255为C口输出,A口输入mov al,90hout dx,alinout: mov dx,io8255a ;从A口输入一数据in al,dxmov dx,io8255c ;从C口输出刚才自A口out dx,al ;所输入的数据mov dl,0ffh ;判断是否有按键mov ah,06hint 21hjz inout ;若无,则继续自a口输入,c口输出mov ah,4ch ;否则返回int 21hcode endsend start16. 题目:在交通灯实验中,请使用8255的C口按位置1/置0 的功能实现如下现象:南北路口的红灯、东西路口的绿灯同时亮30秒左右。