微型计算机原理与接口技术Word.docx

上传人:rrsccc 文档编号:9252516 上传时间:2021-02-12 格式:DOCX 页数:15 大小:224.14KB
返回 下载 相关 举报
微型计算机原理与接口技术Word.docx_第1页
第1页 / 共15页
微型计算机原理与接口技术Word.docx_第2页
第2页 / 共15页
微型计算机原理与接口技术Word.docx_第3页
第3页 / 共15页
微型计算机原理与接口技术Word.docx_第4页
第4页 / 共15页
微型计算机原理与接口技术Word.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《微型计算机原理与接口技术Word.docx》由会员分享,可在线阅读,更多相关《微型计算机原理与接口技术Word.docx(15页珍藏版)》请在三一文库上搜索。

1、49练习题10、写一个宏定义,要求能把任意一个寄存器的最低位移至另一个存储器的最高位中。DATA SEGMENTVAR1 DB 4,6VAR2 DD 200 DUP(?)DATA ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATA,SS:STACKSSTART:MOV AX,DATAMOV DS,AXXTY MACRO X,YMOV AX,XAND AX,1ROR AX,1MOV Y,AXENDMMOV DX,1MOV AX,0XTY DX,AX,MOV AH,4CHINT 21HCODES ENDSEND STA

2、RT11、利用DOS功能调用从键盘输入60个字符到缓冲区BUF中,在按下ENTER键后在屏幕上显示这些字符。请写出程序段。DATA SEGMENTST1 DB Please input 60 characters from keyboard.,0DH,0AH,$BUF DB 61 DUP(?)DATA ENDSCOD SEGMENTASSUME CS:COD,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DL,07HMOV AH,2INT 21HMOV DX,OFFSET ST1MOV AH,9INT 21HLEA SI, BUFMOV CX,60LP: MOV

3、AH,7INT 21HMOV SI,ALCMP AL,0DHJZ EXITINC SILOOP LPEXIT: MOV BX,60SUB BX,CXMOV CX,BXLEA SI, BUFLP2: MOV DL,SIMOV AH,6INT 21HINC SILOOP LP2MOV AH,4CHINT 21HCOD ENDSEND START12、试写一段程序,要求先给出一声铃响提示,屏幕上显示:“Please input a alphabet:”,然后从键盘输入一个字母送BL。DATAS SEGMENTST1 DB Please Input a alphabet:,0DH,0AH,$ST2 D

4、B ?DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV DL,7MOV AH,2INT 21HMOV DX,OFFSET ST1MOV AH,9INT 21HMOV AH,1INT 21HMOV BL,ALMOV AH,4CHINT 21HCODES ENDSEND START第五章 汇编语言程序设计例5-1:试用8086CPU的指令实现Y = (X1 +X2)/2的程序设计。DATAS SEGMENTX1 DB 34HX2 DB 89HY DW ?DATAS ENDSSTACKS SEG

5、MENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AX,0MOV AL,X1MOV BL,X2ADD AL,BLADC AH,0SAR AX,1MOV Y,AXMOV AH,4CHINT 21HCODES ENDSEND START例5-1(老书):编制实现两个三十二位数相乘的程序。DATA SEGMENTMULNUM DW 1234HDW 0B8FDHDW 0DFE6HDW 78FFHDW 4 DUP(?)DATA ENDSCOD SEGMENTASSUME

6、 CS:COD,DS:DATASTART: MOV AX,DATAMOV DS,AXXOR AX,AXLEA BX,MULNUMMUL32: MOV AX,BXMOV SI,BX+4MOV DI,BX+6MUL SI ;B*dMOV BX+8,AXMOV BX+0AH,DXMUL DI ;B*CADD AX, BX+0AHADC DX,0MOV BX+0AH,AXMOV BX+0CH,DXXOR AX ,AXXOR DX ,DXMOV AX,BX+2MUL SI ;A*DADD AX,BX+0AHADC DX,BX+0CHPUSHFMOV AX,BX+0AHMOV DX,BX+0CHXOR A

7、X ,AXXOR DX ,DXMOV AX,BX+2MUL DI ;A*CPOPFADC AX,BX+0CHADC DX,0MOV BX+0CH,AXMOV BX+0EH,DXXOR AX,AXMOV AH,4CHINT 21HCOD ENDSEND START例5-2:将一位十六进制数转换成与它相对应的ASCII码。DATAS SEGMENTTAB DB 30H,31H,32H,33H,34H,35H,36H,37HDB 38H,39H,41H,42H,43H,44H,45H,46HHEX DB 8ASC DB ?DATAS ENDSCODES SEGMENTASSUME CS:CODES,

8、DS:DATASSTART: MOV AX,DATASMOV DS,AXMOV BX,OFFSET TABMOV AL,HEXXLATMOV ASC,ALMOV AX,4C00HINT 21HCODES ENDSEND START例5-3:要求对不足250个的学生成绩进行统计分析,统计出优秀、及格和不及格的人数。DATAS SEGMENTBUF DB 15DB 64,78,89,55,69,98,45,67,96,99,92,89,85,91,45NUM DB 3 DUP(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSST

9、ART:MOV AX,DATASMOV DS,AXMOV SI,OFFSET BUFMOV CH,SIMOV CL,0MOV BX,0INC SILP: MOV AH,SICMP AH,90JB BLOW90INC BHNEXT: INC SIDEC CHJNZ LPMOV SI,OFFSET NUMMOV SI,BHMOV SI+1,BLMOV SI+2,CLMOV AH,4CHINT 21HBLOW90: CMP AH,60JB BLOW60JMP ABOV60ABOV60: INC BLJMP NEXTBLOW60: INC CLJMP NEXTCODES ENDSEND START例5

10、-5利用表内地址跳转法来实现使键盘上A、B、C、D4个字母键成为4条输入命令,使之分别对应4个具有不同算法的控制子程序。DATAS SEGMENTBASE DB pa,pb,pc,pdKEY DB ?DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATASMOV DS,AXLOP: XOR AX,AXMOV AH,1INT 21HCMP AL,41HJB LOPCMP AL,44HJA LOPSUB AL,41HMOV BX,OFFSET KEYMO

11、V AH,0ADD BX,AXJMP WORD PTRBXMOV AH,4CHINT 21HCODES ENDSEND START例5-6:试编写一程序,统计出某一字数据中“1”的个数。DAT SEGMENTXDA DW 3AD8HCONT DB ?DAT ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTART: MOV AX,DATMOV DS,AXMOV CL,0MOV AX,XDALOP: CMP AX,0JZ EXITSHL AX,1JNC NEXTINC CLNEXT: JMP LOPEXIT: MOV CONT,CLINT 20HCOD ENDSEND S

12、TART例5-7:编写程序将两个n字节的无符号数相加,结果存入SUM开始的n+1字节存储区中。DAT SEGMENTDAT1 DB 12H,34H,56H,71H,23H,45H,67HDAT2 DB 76H,54H,32H,17H,65H,43H,21HSUM DB 8 DUP(?)DAT ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTART: MOV AX,DATMOV DS,AXXOR AX,AXMOV BX,OFFSET DAT1MOV SI,OFFSET DAT2LEA DI,SUMMOV CX,7CLCLP: MOV AL,SIADC AL,BXMOV

13、DI,ALINC BXINC SIINC DILOOP LPADC BYTE PTR DI,0MOV AH,4CHINT 21HCOD ENDSEND START例5-8:编制程序用单字符输出的DOS功能调用向屏幕输出以“%”结束的字符串。DAT SEGMENTST1 DB How are you?%DAT ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTART: MOV AX,DATMOV DS,AXLEA SI,ST1AGAIN: MOV DL,SICMP DL,%JZ ENDOUTMOV AH,2INT 21HINC SIJMP AGAINENDOUT: MOV

14、 AH,4CHINT 21HCOD ENDSEND START例5-9:设有16个内存单元需要修改,修改规律是第1、3、6、9、12号单元均加5,其余单元均加10,试用循环结构变成实现。DATAS SEGMENTXDA DB 16 DUP(?)LRULER DW 0A490HDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,16MOV BX,OFFSET XDAMOV DX,LRULERAGAIN: MOV AX,BXSISHL DX,1JC ADD5ADD AX,1

15、0JMP SHORT RESULTADD5: ADD AX,5RESULT: MOV BXSI,AXINC SILOOP AGAINMOV AH,4CHINT 21HCODES ENDSEND START例5-10:设某一数组的长度为N,各元素均为字数据,试编制一个程序使该数组中的数据按照从小到大的次序排列。DATAS SEGMENTDAT DB 25,68,86,98,34,67,12,4,49,27DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV BX,0MOV CX,10DEC CX

16、LOP1: MOV DX,CXLOP2: MOV AL,DATBXCMP AL,DATBX+1JBE CONTIXCHG AL,DATBX+1MOV DATBX,ALCONTI: ADD BX,1LOOP LOP2MOV CX,DXMOV BX,0LOOP LOP1MOV AH,4CHINT 21HCODES ENDSEND START例5-11:定义一个显示两个十六进制数的子程序:DATAS SEGMENTBUF DB 12HDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART: MOV AX,DATASMOV DS,AXLEA SI,BU

17、FMOV BL,SICALL DISPPMOV AH,4CHINT 21HDISPP PROC NEARPUSH DXPUSH CXMOV DL,BLMOV CL,4ROL DL,CLAND DL,0FHCALL DISP1MOV DL,BLAND DL,0FHCALL DISP1POP CXPOP DXRETDISPP ENDPDISP1 PROC NEAROR DL,30HCMP DL,3AHJB DDDADD DL,07HDDD: MOV AH,2INT 21HRETDISP1 ENDPCODES ENDSEND START例5-12:编制显示四位十六进制数的子程序。DATAS SEGM

18、ENTBUF DW 1234HDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXLEA SI,BUFMOV AX,SICALL DISP4MOV AH,4CHINT 21HDISP4 PROC NEARPUSH BXPUSH CXPUSH DXPUSH AXMOV AL,AHCALL DISP2POP AXCALL DISP2POP DXPOP CXPOP BXRETDISP4 ENDPDISP2 PROC NEARMOV BL,ALMOV DL,ALMOV CL,4ROL D

19、L,CLAND DL,0FHCALL DISP1MOV DL,BLAND DL,0FHCALL DISP1RETDISP2 ENDPDISP1 PROCOR DL,30HCMP DL,3AHJB DDDADD DL,07HDDD: MOV AH,2INT 21HRETDISP1 ENDPCODES ENDSEND START例5-13:已知数组由100个字数据组成,试变成求出这个数组元素之和。DATAS SEGMENTARY DW 25 DUP(12H,5DH,3CH,7AH)SUM DW ?DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:

20、STACKSSTART:MOV AX,DATASMOV DS,AXCALL RADDMOV AH,4CHINT 21HRADD PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXLEA BX,ARYMOV CX,100XOR AX,AXMOV DX,AXCL1: ADD AX,BXJNC CL2INC DXCL2: ADD BX,2LOOP CL1MOV SUM,AXMOV SUM+2,DXPOP DXPOP CXPOP BXPOP AXRETRADD ENDPCODES ENDSEND START例5-14:已知数组A由100个字数据组成,数组B由50个字数据组成,试

21、编程分别求出这两个数组元素之和。DATAS SEGMENTCA DW 100ARA DW 20 DUP(34H,5FH,8DH,4AH,9BH)SA DD ?CB DW 50ARB DW 10 DUP(3DH,4CH,2EH,88H,1CH)SB DD ?TAB DW 3 DUP(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AX,OFFSET CAMOV TAB,AXMOV AX,OFFSET ARAMOV TAB2,AXMOV AX,OFFSET SAMOV

22、 TAB4,AXMOV SI,OFFSET TABCALL RADDMOV AX,OFFSET CBMOV TAB,AXMOV AX,OFFSET ARBMOV TAB2,AXMOV AX,OFFSET SBMOV TAB4,AXMOV SI,OFFSET TABCALL RADDMOV AH,4CHINT 21HRADD PROC NEARMOV BX,SIMOV CX,BXMOV BX,SI+2MOV DI,SI+4XOR AX,AXMOV DX,AXCL1: ADD AX,BXJNC CL2INC DXCL2: ADD BX,2LOOP CL1MOV DI,AXMOV DI+2,DXRE

23、TRADD ENDPCODES ENDSEND START5.8 练习题 (新书)3、编程题(1)试编写一程序,把数组STRING中存放的20个8位二进制数分成正整数组和负数数组,并统计正数、负数和零的个数,结果分别存放到P、M、Z三个单元。DAT SEGMENTSTRING DW 2 DUP(3045H,0FD34H,0D3DH,9899H,0,3DF2H,0,0FFDEH,93FDH,0DE6CH)P DW 20 DUP(?)M DW 20 DUP(?)Z DW 20 DUP(?)DAT ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTART: MOV AX,DA

24、TMOV DS,AXXOR BP,BPLEA SI ,P ;正数LEA DI ,M ;负数LEA BP ,Z ;零PUSH SIPUSH DIPUSH BPLEA BX,STRINGMOV CX,20LL: MOV AX,BXPUSH AXADD AX,AXJZ L1POP AXPUSH AXSAL AX,1JC L2POP AXMOV SI ,AXADD SI,2JMP LALA: ADD BX ,2LOOP LLXOR CX,CXMOV CX,2POP AXMOV DX,BPSUB DX,AXSHR DX,CLMOV BP ,DXPOP AXMOV DX,DISUB DX,AXSHR DX

25、,CLMOV DI ,DXPOP AXMOV DX,SISUB DX,AXSHR DX,CLMOV SI ,DXMOV AH,4CHINT 21HL1: POP AXMOV BP,AXADD BP ,2JMP LAL2: POP AXMOV DI ,AXADD DI,2JMP LACOD ENDSEND START(2)试编写一个程序,完成10个一位十进制数累加,累加结果以分离式BCD码形式存放于AH(高位),AL(低位)寄存器。DAT SEGMENTD1 DB 2,3,4,5,6,7,8,3,4,5D2 DB ?DAT ENDSCOD SEGMENTASSUME CS:COD,DS:DATS

26、TART: MOV AX,DATMOV DS,AXLEA SI,D1XOR AX,AXMOV CX,10L1: ADD AL,SIAAAINC SILOOP L1MOV AH,4CHINT 21HCOD ENDSEND START(3)试编写一程序,将2个字节的二进制数,变换成用ASCII码表示的四位十六进制书(用四字节表示)。DATAS SEGMENTTAB DB 41H,42H,43H,44H,45H,46HBIN DB 1101101110011110BUF DB 4 DUP(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:M

27、OV AX,DATASMOV DS,AXLEA BX,TABLEA SI,BINLEA DI,BUFMOV CX,4LP1: MOV AX,SI+2PUSH CXXOR CX,CXMOV CL,8ROR AX,CLSUB AX,3030HMOV DX,SIROR DX,CLSUB DX,3030HSHL AH,1ADD AH,ALMOV CL,2SHL DL,CLMOV CL,3SHL DH,CLADC DH,DLADC AH,DHCMP AH,0AHJB LP2SUB AH,0AHMOV AL,AHXLATLP3: MOV DI,ALADD DI,1ADD SI,4POP CXLOOP LP

28、1MOV AH,4CHINT 21HLP2: ADD AH,30HMOV AL,AHJMP LP3CODES ENDSEND START(6)编写一个程序,计算100个16位正整数之和,如果和不超过16位字的范围(0 65535),则保存其和到SUM,如果超过则显示“OVERFLOW!”。DAT SEGMENTDAT1 DW 25 DUP (2D4EH,5611H,1234H,7891H)BUF DW ?STR1 DB overflow!,0DH,0AH,$DAT ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTART: MOV AX,DATMOV DS,AXMOV

29、SI,OFFSET DAT1MOV BX,OFFSET BUFMOV CX,100XOR AX,AXL1: ADD AX,SIJC DISPLOOP L1MOV BX,AXMOV AH,4CHINT 21HDISP PROC NEARMOV DX,OFFSET STR1MOV AH,9INT 21HMOV AH,4CHINT 21HDISP ENDPCOD ENDSEND START5.8练习题(老书)(4)试编写一个汇编程序,要求实现将ASCII码表示的两位十进制数转换为一字节二进制数。DATA SEGMENTASC DB 32H,38HASCEND DB ?DATA ENDSCODE SE

30、GMENTASSUME CS:CODE, DS:DATAMAIN PROC FARSTART: MOV AX,DATAMOV DS,AXXOR BX,BXMOV BX,OFFSET ASCMOV AX,0MOV AL,BXCMP AL,30HJL EXITCMP AL,39HJG EXITSUB AL,30HMOV DL,BX+1CMP DL,30HJL EXITCMP DL,39HJG EXITSUB DL,30HMOV CL,4SHL DL,CLADD AL,DLMOV ASCEND,ALEXIT: MOV AH,4CHINT 21HMAIN ENDPCODE ENDSEND START(5)某存储区中存有20个单字节数,试编写一汇编程序分别求出其绝对值并且将结果保存到CL中。DAT1 SEGMENTMUM DB 1,2,3,-9,0,7,5,-4,-7,-11,34

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1