微机原理何小海版习题解答-第4章_第1页
微机原理何小海版习题解答-第4章_第2页
微机原理何小海版习题解答-第4章_第3页
微机原理何小海版习题解答-第4章_第4页
微机原理何小海版习题解答-第4章_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术第4章习题解答第1题假设程序中的数据定义如下:PARTNODW?PNAMEDB16DUP(?) COUNTDD?PLENTHEQU$-PARTNO则PLENTH=

,它的意义是

。答案PLENTH=22意义:PARTNO、PNAME、COUNT三个变量所占的空间大小或字节数No.01第2题假设有下面的数据定义:BUFFERDB?STRINGDW20DUP(?) TABLEDB‘ABCD’则下列指令单独执行后,有关寄存器的内容是多少?答案MOVAX,TYPEBUFFER AX=1

MOVAX,TYPESTRING AX=2MOVAX,LENGTHSTRING AX=20MOVAX,LENGTHTABLE AX=1MOVAX,SIZESTRING AX=40No.02第3题计算下列程序分别执行后AX寄存器的内容。No.03(1) MOV AX,0 MOV BX,2345H TEST BX,1000H JZ NEXT INC AXNEXT:HLTAX=0第3题(2) MOVAX,0 XOR BX,BXAGAIN:INCBX ADDAX,BX CMPBX,10 JB AGAIN HLTAX=(((((0+1)+2)+3)….+10)=55No.03第3题(3) TABLEDB10,20,30,40,50INDEXDW2……LEABX,TABLE ADDBX,INDEX MOVAX,[BX] HLTAX=281EHNo.03第3题(4) MOVAX,0 MOVBX,0ABCDH MOVCX,16AGAIN:SHLBX,1JNCNEXTINC AXNEXT:LOOPAGAIN HLTAX=10No.03第3题(5)

MOVAL,0FFH CBW INC AX INC AX XCHGAH,AL SHR AH,1 RCR AL,1 HLTAX=0080HNo.03第4题若在自1000H单元开始有一个1000个字节的数据块,要把它传送到自1200H开始的存储区中去,用以下三中方法,分别编制程序:(1)

不用串操作指令。(2)用单个传送的串操作数据传送指令。(3)用带重复前缀的串操作数据传送指令。No.04第4题No.04Y循环结束?修改地址指针SI←源数据块末地址DI←目的数据块末地址CX←循环次数修改CXAL←DS:[SI]ES:[DI]←AL结束Nagain第4题DATA SEGMENT ORG 1000HN1 DB 1000dup(?)N2 EQU 1200H+1000–1CON EQU 1000DATA ENDSSTACKSEGMENT STACK ‘STACK’ DW 100DUP(?)STACKENDSCODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATA MOV DS,AXNo.04第4题 MOV ES,AX LEA SI,N1+1000–1 MOVDI,N2 MOVCX,CONL1: MOVAL,[SI] MOV[DI],AL DECSI DECDI LOOPL1 MOVAH,4CH INT21HCODEENDS END STARTNo.04STDMOVSBLOOPL1STDREPMOVSB

第5题自100H单元开始,有100个无符号数(字节),编写程序计算这100个数的和,并把和存放在1971H和1972H单元,且高位存放在1972H单元。No.05第5题No.05定义数据段初始化DS获取数据地址SI0AX100CXAX+[SI]AXSI+1SIAXSUM循环结束NY结束第5题STACKSEGMENTSTACK‘STACK’DW64DUP(?)STACKENDSDATASEGMENTORG100HNUMDB100DUP(?)ORG1971HSUMDW?DATAENDSCODESEGMENTASSUMECS:SEGMENT,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXNo.05第5题 LEASI,NUMMOVCX,100XORAX,AXL1:ADDAL,[SI]

ADCAH,00HINCSILOOPL1MOVSUM,AXMOVAH,4CHINT21HCODEENDSENDSTARTNo.05第6题编写程序,计算下列函数值。

X+5 当X<0Y=4X 当0≤X≤3004X-10 当X>300No.06第6题No.06开始结束(AX)<0?X(AX)(AX)>300?Y(AX)+5Y4*(AX)-10Y4*(AX)YYNN第6题No.06DATA SEGMENT X DW-5Y DW ?DATA ENDSSTACKSEGMENT STACK‘STACK’ DW 100DUP(?)STACK ENDS

CODESEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AX

MOVAX,XCMPAX,0JSL1

;X<0转L1

CMPAX,300JGL2

;X>300转L2第6题No.06SHLAX,1SHLAX,1

;X×4

JMPSTOP

L2:SHLAX,1SHLAX,1SBBAX,10 ;4×X-10

JMPSTOP

L1:ADDAX,5 ;X+5

STOP:MOVY,AX

MOVAH,4CH INT21H CODE ENDS ENDSTART

第7题已知A、B、C三个变量,编程完成如下处理:

(1)若三个数均为0,则设置变量D为1;

(2)若三个数均不为零,则求这三个数的算术和,并存放在变量E中。No.07第7题No.07A=0?取A→AX,B→BX,C→CXB=0?C=0?B!=0?C!=0?YYYNNY1→D结束A+B+C→E开始oneNNdoneNY第7题No.07 DATASEGMENT ADW? BDW? CDW? DDW? EDW? DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX MOVAX,A MOVBX,B MOVCX,C第7题No.07 CMPAX,0 JNZone CMPBX,0 JNZdone CMPCX,0 JNZdone MOVD,1 JMPdoneone: CMPBX,0 JZdone CMPCX,0 JZdone ADDAX,BX ADDAX,CX MOVE,AX 第7题No.07done: MOVAH,4CH INT21HCODEENDSENDSTART第9题在0200H单元和020AH单元开始,分别存放两个各为10个字节的未组合BCD数(地址最低出存放最低字节)。编写程序计算两个未组合BCD数的和,且把和存放在0214H单元开始的存储单元中。No.09第9题No.09初始化数据指针SI,DI,BX初始化循环次数CX开始CF清0取[SI]→ALAL+[DI]+CF→AL调整AAAAL→[BX]修正指针SI,DI,BX循环结束?结束NYCF=1?保存进位Nagaindone第9题No.09 DATASEGMENT ORG200H SRC DB0,1,2,3,4,5,6,7,8,9 DST DB5,6,7,8,9,4,3,2,1,5 SUM DB11DUP(0) DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX LEA SI,SRC LEA DI,DST LEA BX,SUM MOV CX,10 XOR AX,AX第9题No.09again: MOVAL,[SI] ADCAL,[DI] AAA MOV[BX],AL INCSI INCDI INCBX LOOPagain JNCdone MOVBYTEPTR[BX],1done: MOVAH,4CH INT21HCODEENDSENDSTART第10题若自STRING单元开始有1000个数(字节),试针对下面情况编程将它们中的最小值、最大值找出来,并分别存放在5000H和5001H字节单元中。(1)这1000个数为无符号数。(2)这1000个数为带符号数。No.10第10题No.10 DATASEGMENT STRINGDB1000DUP(?) ORG5000H MINDB? MAXDB? DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,1000 LEA SI,STRING MOV AH,[SI] ;AH保存临时最大值 MOV AL,AH ;AL保存临时最小值

DEC CX 第10题No.10 INC SIagain: CMPAH,[SI] JAE next1 MOV AH,[SI]next1: CMP AL,[SI] JBE next2 MOV AL,[SI]next2: INC SI LOOPagain MOV MIN,AL MOV MAX,AH MOV AH,4CH INT 21HCODEENDSENDSTART

JLEJGE第11题No.11已知数组A包含10个互不相等的整数,数组B包含15个互不相等的整数,写一程序,将既在A中出现又在B中出现的偶数存放在数组C中。第11题No.11初始化数据指针SI,BX初始化循环次数CX取AL←[SI]lop1AL为偶数?N初始化循环次数DX初始化数据指针DIAL=[DI]?修改指针DI和循环次数DXDX=0?保存结果修正指针BX修改SI,CX循环结束?结束NNYYYYNnext2lop2next1第11题No.11 DATASEGMENT ADB10DUP(?) BDB15DUP(?) CDB10DUP(?) DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,10 LEA SI,A LEA BX,Clop1: MOV AL,[SI] TEST AL,01H JNZ next2第11题No.11 MOV DX,15 LEA DI,Blop2: CMP AL,[DI] JZ next1 INC DI DEC DX JNZ lop2 JMP next2next1: MOV [BX],AL INC BXnext2: INC SI LOOP lop1 MOV AH,4CH INT 21HCODEENDSENDSTART

第13题统计STRING字符串中数字字符(‘0’~’9’)的个数,并将数字字符放入BUFFER区内(开始单元存放字符个数)。No.13第13题No.13初始化数据指针SI,DI初始化循环次数CX,个数BL取AL←[SI]againAL≥‘0’?N保存数字字符并修正DIBL←BL+1循环结束?NYYYNAL≤‘9’?修正SI、CX结束next保存结果第13题No.13 DATASEGMENT STRINGDB100DUP(?) BUFFERDB101DUP(?) DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,100 LEA SI,STRING LEA DI,BUFFER INC DI MOV BL,0again: MOV AL,[SI]

第13题No.13 CMP AL,‘0’ JB next CMP AL,‘9’ JA next INC BL MOV [DI],AL INC DInext: INC SI LOOP again MOV BUFFER,BL MOV AH,4CH INT 21HCODEENDSENDSTART

第19题若自STRING开始有一个字符串(以‘$’作为字符串的结束标志)。请编程查找此字符串中有多少个‘#’,并将个数存放在NUMBER字单元中,且把每一个‘#’字符所存放的偏移地址放到自POINTER开始的连续存储字单元中。No.19第19题No.19初始化数据指针SI,DI初始化个数NUMBER取AL←[SI]againAL=‘$’?N保存偏移地址并修正DINUMBER←NUMBER+1NYYAL=‘#’?修正SI结束nextdone第19题No.19 DATASEGMENT STRINGDB‘FAER#DFFD#MDF2’,‘$’ POINTERDW100DUP(?) NUMBERDW? DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATASTART: MO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论