1 题目:编程将(AX )=2387、(BX )=192FH 、(CX )=9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。
CODE SEGMENT ASSUME CS:CODE START: MOV AX,2387 MOV BX,192FH MOV CX,9256 CMP AX,BX JAE NEXT1 XCHG AX,BX NEXT1: CMP AX,CX JAE NEXT2 XCHG AX,CX NEXT2: CMP BX,CX JAE NEXT3 XCHG BX,CX NEXT3:MOV AH,4CH INT 21H CODE ENDS END START4 题目:中断向量为:1234:5678H ,编程将此中断向量写入类型0所在的中断向量表,上机调试出程序,并将程序和结果记录下来。
(直接用MOV 指令写入即可)code segmentassume cs:code,ds:code start:xor ax,ax mov ds,ax mov bx,0 mov cl,2 shl bx,clmov word ptr[bx],5678h mov word ptr[bx+2],1234h mov ah,4ch int 21h code ends end start2题目:在数据段中定义如下数据:32,34,89H,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。
DA TA SEGMENT NUM DB 32,34,89H DA TA ENDS CODE SEGMEN TASSUME CS:CODE,DS:DA TA STAR T: MOV AX,DA TAMOV DS,AX ;初始化D SLEA BX ,NUM ;取有效地址到BX ,以便访问要排序的数MOV AL,[BX] CMP AL,[BX +1]JGE NEXT1 ;若第一个数大则跳转,否则将第一个与第二个数交换XCHG AL,[BX+1] MOV [BX],AL NEXT1: CMP AL,[BX +2]JGE NEXT2;若第一个数大则跳转,否则将第一个与第三个数交换XCHG AL,[BX+2] MOV [BX],AL NEXT2:MOV AL,[BX+1];将第二个和第三个数比较 CMP AL,[BX +2]JGE NEXT3;若第二个数大则跳转,否则将第二个与第三个数交换XCHG AL,[BX+2] MOV [BX+1],AL NEXT3: MOV AH,4CH INT 21H CODE ENDS3 题目:在数据段中定义如下数据:99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。
data segmentnum db 99h,25h,86h data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,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 next2xchg al,[bx+2] mov[bx],al next2: mov al,[bx+1] cmp al,[bx+2] jae next3xchg al,[bx+2] mov [bx+1],al next3: mov ah,4ch int 21h code ends end start5 题目:利用实验箱中的8255并口芯片实现1个发光二极管的闪烁。
io8255a equ 288h io8255b equ 28bh io8255c equ 28ah code segment assume cs:code start: mov dx,28bh mov al,80h out dx,al mov cx,5 disp: mov al,03h out dx,al push cx mov cx,10h delay: loop delay pop cx mov al,02h out dx,al loop disp mov ah,4ch int 21hcode ends end start13 编写完整的汇编语言程序,实现:显示字符串“Hello World!”,并利用debug 跟踪该程序的执行过程。
DA TA SEGMENTSTR1 DB "Hello World!”,"$" LENT DB ? DA TA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AX ;初始化DS LEA DX,STR1 MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START6 题目:在交通灯实验中请使用8255的C 口 按位置1/置0 的功能实现如下现象: 南北路口的绿灯、东西路口的红灯同时亮30秒左右。
i o8255a equ 288hio8255b equ 28bh io8255c equ 28ah code segment assume cs:code start: mov dx,28bh mov al,80h out dx,al disp: mov al,0bh out dx,al mov al,05h out dx,al mov cx,2000h de1: mov di,9000h de0: dec di jnz de0loop de1mov dl,0ffh ;判断是否有按键 mov ah,06h int 21h mov ah,4ch int 21h code ends end start7 题目:在交通灯实验中,请使用8255的C 口 按位置1/置0 的功能实现如下现象:东西路口的黄灯闪烁5次。
;设8255的CS 片选地址接280H-287H ;PC1接黄色发光二极管CODE SEGMENT ASSUME CS:CODE START: MOV DX,28bH MOV AL,80HOUT DX,AL ;8255初始化 MOV CX,5 DISP: MOB AL,03HOUT DX,AL ;PC1通过控制端口置位,点亮黄灯PUSH CX ;暂时保存CX 值,因为下面的循环要用到 MOV CX,100H DELAY :LOOP DELAY ;延时循环,可以调节 POP CX MOV AL,02HOUT DX,AL ;PC1通过控制端口清零,熄灭黄灯LOOP DIS P ;总共循环5次,黄灯亮灭5次,即闪烁5次 MOV AH,4CH INT 21H CODE ENDS END START8 题目:在使用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 start 9 编写完整的汇编语言程序,实现:小写字母a,b,c,d到A,B,C,D的转换。
DA TA SEGMENTINPUT DB LENT DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA BX,INPUTMOV CX,LENT-INPUTINPUTS:MOV AL,[BX]CMP AL,39HJBE NEXT1CMP AL,61HJB NEXT1SUB AL,20H ;将小写字母转换为大写字母,对于数字和大写字母不处理MOV [BX],AL;回送转换结果NEXT1:INC BXLOOP INPUTSMOV AH,4CHINT 21HCODE ENDSEND START18.题目:编写完整的汇编语言程序,实现:从键盘输入4个字符。
DATA SEGMENTINPUT DB 10 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA BX,INPUTMOV CX,4INPUTS:MOV AH,01HINT 21HMOV [BX],ALINC BXLOOP INPUTSMOV AH,4CHINT 21HCODE ENDSEND START10 题目:利用可编程计数定时器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的模式字,只写低八位,工作方式3,计数初值为二进制OUT DX,AL ;写计数器2的工作模式字MOV AL,100MOV DX,282HOUT DX,AL ;写计数器2的计数初值,二进制,只写低八位,至此已完成初始化MOV AH,4CHINT 21HCODE ENDSEND STAR11 编写完整的汇编语言程序,实现两个双字的加法,假设第一个操作数是10008423H,放在2000H处,第二个操作数是2007F00H,放在了3000H处。
DA TA SEGMENTORG 2000HNUM1 DD 10008423HCNUM DB ? ;存放进位标志ORG 3000HNUM2 DD 2007F00HDA TA ENDSCODE SEGMEN TASSUME CS:CODE,DS:DA TASTAR T:MOV AX,DA TAMOV DS,AX;初始化D SLEA BX,NUM1 ;取有效地址到BX,以便访问要排序的数LEA SI,NUM2MOV AX,WORD PTR [BX]ADD AX,WORD PTR [SI]MOV WORD PTR [BX],AXMOV AX,WORD PTR [BX+2]ADC AX,WORD PTR [SI+2]MOV WORD PTR[BX+2],AXMOV AL,0ADC AL,0MOV BYTE PTR [BX+4],AL ;保存进位原先方括号内为BX+3MOV AH,4CHINT 21HCODE ENDSEND STAR T 12 编写完整的汇编语言程序,实现:把“Hello,Liaocheng University”传送STR2所在的位置。