1、微机原理编程题1. 分支程序设计.编写一段程序,已知 BUF1 单元中有一带符号字节数据 X,BUF2 中有一带符号字节数据 Y,根据以下函数关系编写程序求 Z 的值,结果存入 RESULT 单元。Z=|X-Y| ;DATA SEGMENTBUF1 DB 05HBUF2 DB 02HRESULT DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,BUF1MOV BL,BUF2SUB AL,BLJNC GREATNEG ALGREAT:MOV RESULT,ALEXIT: MOV AH,
2、4CHINT 21HCODE ENDSEND START .编写一段程序,已知 BUF 单元中有一无符号字节数据 X,假设为 8,根据以下函数关系编写程序求 Y 的值,结果存入 RESULT 单元。Z=5X X=10;DATA SEGMENTBUF DB 8RESULT DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,BUFCMP AL,10JAE GREMOV BL,ALADD AL,ALADD AL,ALADD AL,BLJMP DONEGRE: SUB AL,5DONE: MO
3、V RESULT,ALMOV AH,4CHINT 21HCODE ENDS END START.在内存单元 BUF 中存放一个带符号字节数据 X,假定为-2,试根据以下函数关系编写程序求 Y 的值,结果存入 RESULT 单元。Y=1 X0,0 X=0,-1 X0;DATA SEGMENTBUF DB -2RESULT DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,BUFCMP AL,0JGE L1MOV AL,-1JMP L3L1:JZ L2MOV AL,1JMP L3L2:MO
4、V AL,0L3:MOV RESULT,ALMOV AH,4CHINT 21HCODE ENDSEND START 2. N 个数中求最大值、最小值.假定 N=10,已知原始数据存放在 BUF 开始的内存单元中,将结果存入 MAX,MIN 内存单元中。DATA SEGMENTBUF DB 3,5,7,8,5,3,9,7,13,1COUNT EQU $-BUFMAX DB ?MIN DB ? DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,COUNT-1 MOV AL,BUFMOV MAX,A
5、LMOV MIN,ALLEA SI,BUFAGAIN:MOV AL,SI+1CMP AL,MINJGE S1MOV MIN,ALS1: CMP AL,MAXJLE S2MOV MAX,ALS2: INC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START 3. 编写程序求 1+2+3+N100 时最大的 N 值,将 N 值送 NUM 单元中,同时将 1+2+3+N 的和送到 SUM 单元中。DATA SEGMENTNUM DB ?SUM DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV
6、AX,DATAMOV DS,AXMOV AL,0MOV BL,0AGAIN:INC BLADD AL,BLCMP AL,100JB AGAINSUB AL,BLDEC BLMOV NUM,BLMOV SUM,ALMOV AH,4CHINT 21HCODE ENDSEND START 4. 统计字符,正数,负数,零的个数。若自 STRING 单元开始存放一个字符串,以$结尾,试编写程序,统计字符串的长度,并将结果存入 COUNT 单元。DATA SEGMENTSTRING DB abcdefg$COUNT DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA
7、TASTART:MOV AX,DATAMOV DS,AXLEA SI,STRINGMOV CX,0NEXT: MOV AL,SICMP AL,$JZ DONEINC CXINC SIJMP NEXTDONE: MOV COUNT,CXMOV AH,4CHINT 21HCODE ENDSEND START .自 BUF 单元开始存放 10 个带符号字节数据,将其中的正数、负数和零选出来,并统计其个数,分别存入 PLUS、MINUS 和 ZERO 单元中。DATA SEGMENTBUF DB 5,-2,0,-1,4,0,-4,8,0,-7PLUS DB ?MINUS DB ?ZERO DB ?DA
8、TA ENDSCODE SEGMENTASSUME CS:DATA,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,BUFMOV CX,10AGAIN:MOV AL,BXINC BXAND AL,ALJS M1JZ M2INC PLUSJMP NEXTM1: INC MINUSJMP NEXTM2: INC ZEROJMP NEXTNEXT: LOOP AGAINMOV AH,4CHINT 21H CODE ENDSEND START 5. 求压缩 BCD 码的和。已知从 BUF1 和 BUF2 单元开始,存放两个各为 10 个字节的 BCD 数,求这两个数的和
9、,并将结果存入 BUF3 单元中。DATA SEGMENTBUF1 DB 01H,01H,01H,01H,01H,01H,01H,01H,01H,01HBUF2 DB 03H,03H,03H,03H,03H,03H,03H,03H,03H,03HBUF3 DB 11 DUP(?) DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,10LEA SI,BUF1LEA DI,BUF2LEA BX,BUF3AGAIN: MOV AL,SIADC AL,DIDAAMOV BX,ALINC SIINC D
10、IINC BXLOOP AGAINADC AH,0MOV BX,AHMOV AH,4CHINT 21HCODE ENDSEND START6. 8255 编程题:(课后实验)8255 工作于方式 0,此时 PA、PB 、PC 均为 可独立输入/ 输出的并行口。8255 的各寄存器对应的口地址为:PA 口:200H, PB 口:202H ,PC 口:204H,控制口:206H。要求 8255 工作于方式 0,PA 口设置为输入,PC 口设置为输出。DATA SEGMENTC8255 EQU 206HP8255A EQU 200HP8255C EQU 204HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV DX,C8255 ;设置为A口输入,C口输出MOV AL,90HOUT DX,ALBG: MOV DX,P8255A ;将A口状态从 C口输出IN AL,DXMOV DX,P8255COUT DX,ALJMP BGCODE ENDSEND START