微机原理整理后.docx

上传人:b****6 文档编号:12555736 上传时间:2023-06-06 格式:DOCX 页数:4 大小:17.30KB
下载 相关 举报
微机原理整理后.docx_第1页
第1页 / 共4页
微机原理整理后.docx_第2页
第2页 / 共4页
微机原理整理后.docx_第3页
第3页 / 共4页
微机原理整理后.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理整理后.docx

《微机原理整理后.docx》由会员分享,可在线阅读,更多相关《微机原理整理后.docx(4页珍藏版)》请在冰点文库上搜索。

微机原理整理后.docx

微机原理整理后

微机原理整理后

      2012微机原理14道题目  1.在XXX单元中存放一个数x(0≤x≤15),请用查表法的方法计算x的平方,并将结果保存到YYY单元中。

  课本197页  2.已知数组100个字组成,存放在数据段中以偏移地址为ARY开始的内存中,试编写程序求出这个数组元数之和,结果存放在的数据段中以偏移地址为SUM开始的内存中。

  课本184页  3.试编写一程序,将数据段中偏移地址为BUF1开始的100个数据传送到偏移地址为BUF2开始的连续内存单元中去。

  STACKSEGMENTSTACK’STACK’  DW  100DUP(?

)  STACKENDS  DATASEGMENT  BUF1DB  100DUP(?

)  BUF2DB  100DUP(?

)  SRCADRDW  ?

  DSTADRDW  ?

  LENDW  ?

  DATAENDS  CODESEGMENT    ASSUME  CS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA  MAINPROC  START:

MOV  AX,DATA  MOV  DS,AX  MOV  ES,AX  LEA  AX,BUF1  MOV  SRCADR,AX  MOV  LEN,100  CALL  MVDAT  MOV  AX,4CH  INT  21H  MAINENDP  MVDATPROC    MOV  SI,SRCADR  MOV  DI,DSTADR  MOV  CX,LEN  CLD    CMP  SI,DI  JA  DONE  STD    ADD  SI,CX    DEC  SI  ADD  DI,CX  DEC  DI  DONE:

REP  MOVSB  RET  MVDATENDP  CODEENDS    END  START  4.编写一个程序,实现SUM=a1+a2+?

?

+a20。

已知a1~a20依次存放在以BUF为首址的数据区,每个数据占两个字节,SUM也是两个字节。

  DATASEGMENT  DATDW  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2  SUMDW  ?

  DATAENDS  CODESEGMENT  MAINPROC  FAR    ASSUME  CS:

CODE,DS:

DATA  START:

MOV  AX,DATA  MOV  DS,AX  MOV  AX,0  MOV  SUM,AX    MOV  SI,OFFSETDAT  MOV  CX,20  LP1:

ADD  AX,[SI]  INC  SI  INC  SI  LOOP  LP1    MOV  SUM,AX  MOV  AH,4CH  INT  21H  MAINENDP  CODEENDS    END  START    5.试编写一程序,将AX中的各位去反,然后统计出AX中“0”的个数,将结果存到CL中。

  CODESEGMENT  MAINPROC  FAR    ASSUME  CS:

CODE  START:

MOV  AX,0E001H  MOV  DL,0  MOV  CL,16  NOT  AX  RETEST:

AND  AX,AX  JS  SKIP    INC  DL  SKIP:

SHL  AX,1  LOOP  RETEST  MOV  CL,DL  EXIT:

MOV  AH,4CH  INT  21H  MAINENDP  CODEENDS    END  START  6.在内存数据段存储器中,从ADDR单元开始存有一个字符串,它以“$”符号作为结束标志,试编写程序统计该字符串的长度,并把长度值存入LETH字单元。

  DATASEGMENT  ADDRDB  ’LIUBIN$’  LETHDW  ?

  DATAENDS  STACKSEGMENTPARASTACK’STACK’  DB  100DUP(?

)  STACKENDS  CODESEGMENT    ASSUME  CS:

CODE,DS:

DATA,SS:

STACK  START:

MOV  AX,DATA  MOV  DS,AX    MOV  BX,OFFSETADDR  MOV  CX,0  LP:

MOV  AL,[BX]  CMP  AL,’$’  JE  DONE  INC  CX  INC  BX  JMP  LP  DONE:

MOV  ADDR,CX  MOV  AH,4CH  INT  21H  CODEENDS    END  START  7.试编写一程序,要求实现将ASCII码表示的两位十进制数转换为一字节二进制数,其中高地址单元存放十位数。

  课本200页  8.编程在显示器上输出你自己的汉语拼音姓名的子程序。

  课本155页  .9将数据0-63置入到内存中以BUF为首址的连续64个字节单元中。

  课本198页  10.试编写一程序,把数组STRING中存放的20个8位二进制数分成正数数组和负数数组,并统计正数、负数和零的个数,结果分别存放到P、M、Z三个单元。

  DATASEGMENT  STRING    DW                2  DUP(3045H,0FD34H,0D3DH,9899H,0,3DF2H,0,0FFDEH,93FDH,0DE6CH)  PDW  20DUP(?

)  MDW  20DUP(?

)  ZDW  20DUP(?

)  DATAENDS  CODESEGMENT    ASSUME  CS:

CODE,DS:

DATA  START:

    MOV  AX,DATA  MOV  DS,AX  XOR  BP,BP    LEA  SI,P  ;正数  LEA  DI,M  ;负数  LEA  BP,Z  ;零  PUSH  SI  PUSH  DI  PUSH  BP    LEA  BX,STRING  MOV  CX,20  LL:

    MOV  AX,[BX]  PUSH  AX  ADD  AX,AX  JZ  L1  POP  AX  PUSH  AX  SAL  AX,1  JC  L2    POP  AX  MOV  [SI],AX  ADD  SI,2  JMP  LA  LA:

    ADD  BX,2  LOOP  LL  XOR    MOV    POP    MOV    SUB    SHR    MOV    POP    MOV    SUB    SHR    MOV    POP    MOV    SUB    SHR    MOV    MOV    INT  L1:

    POP    MOV    ADD    JMP  L2:

    POP    MOV    ADD  CX,CXCX,2AXDX,BPDX,AXDX,CL[BP],DXAXDX,DIDX,AXDX,CL[DI],DXAXDX,SIDX,AXDX,CL[SI],DXAH,4CH21HAX[BP],AXBP,2LAAX[DI],AXDI,2        

  

        JMP  LA  CODENDS    END  START  11、试编写一程序,完成10个一位十进制数累加,累加结果以分离式BCD码形式存放于AH、AL寄存器中。

  DATASSEGMENT  TABDB  41H,42H,43H,44H,45H,46H  BINDB  ’1101101110011110’  BUFDB  4DUP(?

)  DATASENDS  CODESSEGMENT    ASSUME  CS:

CODES,DS:

DATAS  START:

    MOV  AX,DATAS  MOV  DS,AX  LEA  BX,TAB  LEA  SI,BIN  LEA  DI,BUF  MOV  CX,4  LP1:

    MOV  AX,[SI+2]  PUSH  CX  XOR  CX,CX  MOV  CL,8  ROR  AX,CL  SUB  AX,3030H  MOV  DX,[SI]  ROR  DX,CL  SUB  DX,3030H  SHL  AH,1  ADD  AH,AL  MOV  CL,2  SHL  DL,CL  MOV  CL,3    SHL  DH,CL  ADC  DH,DL  ADC  AH,DH  CMP  AH,0AH  JB  LP2  SUB  AH,0AH  MOV  AL,AH  XLAT  LP3:

    MOV  [DI],AL  ADD  DI,1  ADD  SI,4  POP  CX  LOOP  LP1  MOV  AH,4CH  INT  21H  LP2:

    ADD  AH,30H  MOV  AL,AH  JMP  LP3  CODESENDS    END  START  12、试编写一程序,将2个字节二进制数,变换成用ASCII码表示的四位十六进制数。

  DATASSEGMENT  TABDB  41H,42H,43H,44H,45H,46H  BINDB  ’1101101110011110’  BUFDB  4DUP(?

)  DATASENDS  CODESSEGMENT    ASSUME  CS:

CODES,DS:

DATAS  START:

    MOV  AX,DATAS  MOV  DS,AX  LEA  BX,TAB    LEA  SI,BIN  LEA  DI,BUF  MOV  CX,4  LP1:

    MOV  AX,[SI+2]  PUSH  CX  XOR  CX,CX  MOV    ROR    SUB    MOV    ROR    SUB    SHL    ADD    MOV    SHL    MOV    SHL    ADC    ADC    CMP    JB    SUB    MOV    XLAT  LP3:

    MOV    ADD    ADD    POP    LOOP    MOV    INT  LP2:

  CL,8AX,CLAX,3030HDX,[SI]DX,CLDX,3030HAH,1AH,ALCL,2DL,CLCL,3DH,CLDH,DLAH,DHAH,0AHLP2AH,0AHAL,AH[DI],ALDI,1SI,4CXLP1AH,4CH21H        ADD  AH,30H  MOV  AL,AH  JMP  LP3  CODESENDS    END  START  13.试用串操作指令SCAS,在10个字节的数据块BLOCK中,搜索与2EH相等的数,若找到,则将该数地址存放于ADR中,并在SIGNAL单元中做标记0FFH;否则,SIGNAL单元中为00H。

  DATASEGMENT  BLOCKDB  NDUP(0)  SINGALDB  00H  ADRDB  00H  DATAENDS  CODESEGMENT    ASSUME  DS:

DATA,CS:

CODE,ES:

DATA  START:

MOV  DIOFFSETBLOCK  CLD    MOV  CX,10  MOV  SL,IEH  REPNISCASB  JNZ  AAA    MOV  SIGNAL,0FFH  MOV  ADR,IEH  AAA:

MOV  SIGNAL,00H  CODEENDS    END  START  14.编写一程序,计算100个16位正整数之和,如果和不超过16位值的范围,则保存其和到SUM,如果超过则显示“Overflow”。

  DATSEGMENT  DAT1DW  25DUP(2D4EH,5611H,1234H,7891H)  BUFDW  ?

  STR1DB  ’overflow!

!

’,0DH,0AH,’$’  DATENDS  CODSEGMENT    ASSUME  CS:

COD,DS:

DAT  START:

    MOV  AX,DAT  MOV  DS,AX    MOV  SI,OFFSETDAT1  MOV  BX,OFFSETBUF  MOV  CX,100  XOR  AX,AX  L1:

    ADD  JC    LOOP  MOV  MOV  INT  DISPPROC  MOV  MOV  INT    MOV  INT  DISPENDP  CODENDS    END    AX,[SI]DISPL1  [BX],AXAH,4CH21HNEAR  DX,OFFSETSTR1AH,921H  AH,4CH21HSTART    

  

  

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2