微机原理与汇编语言第三章习题解答
微机原理与接口技术第三章试题及答案

第三章3-1选择题1、MOVX A,@DPTR指令中源操作数的寻址方式是(B)(A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址2.ORG 0003HLJMP 2000HORG 000BHLJMP 3000H 当CPU响应外部中断0后,PC的值是(B)(A)0003H (B)2000H (C)000BH (D)3000H3.执行PUSH ACC指令,MCS-51完成的操作是(A)(A)SP+1 SP (ACC)(SP)(B)(ACC)(SP)SP-1 SP(B)(C)SP-1 SP (ACC)(SP) (D)(ACC)(SP)SP+1 SP4、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D)(C)2000H (B)2001H (C)2002H (D)2003H5、51执行完MOV A,#08H后,PSW的一位被置位(D)(A)(A)C (B)F0 (C)OV (D)P6、下面条指令将MCS-51的工作寄存器置成3区(B)(A)MOV PSW,#13H (B)MOV PSW,#18H(B)SETB PSW.4 CLR PSW.3 (d) SETB PSW.3 CLR PSW.47、执行MOVX A,DPTR指令时,MCS-51产生的控制信号是(C)(D)/PSEN (B)ALE (C)/RD (D)/WR8、MOV C,#00H的寻址方式是(A)(A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址9、ORG 0000HAJMP 0040HORG 0040HMOV SP,#00H当执行完左边的程序后,PC的值是(C)(A)0040H (B)0041H (C)0042H (D)0043H10、对程序存储器的读操作,只能使用(D)(A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令3-2判断题。
4.MCS-51的相对转移指令最大负跳距是127B。
第三章 习题和思考题参考答案(汇编语言)

第三章习题和思考题(汇编语言)一.填空题1.在汇编语言中标号的类型有NEAR 和FAR,变量的类型有BYTE、WORD、DWORD 、QWORD、TBYTE。
2.在汇编语言中,一个过程的属性为NEAR,表明主程序和子程序在同4一代码段中;若为FAR,则表明主程序和子程序不在同一代码段中。
3.下列程序运行后,X单元的内容为140。
.MODEL SMALL.DATAX DW 10Y DW 20Z DW 100,40,66,80.CODE.STARTUPMOV BX, OFFSET ZMOV AX, [BX]MOV Y, AXMOV AX, [BX+2]ADD AX, YMOV X, AX.EXITEND4.以下程序执行后,(AX)=5501H。
……A DW 124H,345H,128H,255H,512H,127H,678H,789HB DW 5……MOV BX, OFFSET AMOV SI, BMOV AX, [BX+SI]二.选择题1.完成41H送[2100H],42H送[2101H]的正确程序段是B 、C。
A. MOV AL, 41HB. MOV SI, 2100HMOV [2100H], AL MOV [SI], ‘A’INC 41H INC SIMOV [2100H], AL MOV [SI], ‘B’C. MOV AX, 4241HD. MOV AX, ‘AB’MOV [2100H], AX MOV [2100H], AX2. 在汇编过程中不产生指令码,只用来指示汇编程序的指令是 C 。
A. 汇编指令B. 机器指令C. 伪指令D. 宏指令三.问答题1.什么是指令语句?什么是伪指令语句?它们的主要区别是什么?答:指令语句经过汇编后要产生机器码,而伪指令语句不产生机器码;指令语句和机器的一种操作相对应,而伪指令语句和机器的一种伪操作(汇编过程)相对应。
2. 试计算下列伪指令中各变量所分配的字节数A1 DW 20A2 DW 8DUP(?),10,20A3 DD 10DUP(?)A4 DB 3DUP(?,4DUP(0))A5 DB ‘Happy New Year!!’答:变量A1、A2、A3、A4、A5分配的字节数分别为2 、20、40、15、16 四.阅读程序1.请把下列程序中所缺语句补充完整,并回答问题:TITLE EXAMPLE.ASMDATA SEGMENTA DW 0B DW 0C DW 230, 20, 54(1) DATA ENDSCODE SEGMENTASSUME (2) CS:CODE DS:DATAPROG PROC FARSTART:MOV AX,DATA(3) MOV DS, AXMOV BX,OFFSET CMOV AX,[BX]MOV B,AXMOV AX,2[BX]ADD AX,BMOV A,AXEXIT: MOV AH, 4CHINT 21HCODE ENDS_(4) END START问题: 1.程序执行完后,A单元的内容是多少? 2502.在以ES:SOC1为起始地址的表中存有字符串,它以NULL(00H)作为串结束符。
微机原理第三章作业答案

3.1 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和寻址方式的含义是什么?8086指令系统有哪些寻址方式?【解答】8086的指令格式由操作码和操作数字段组成。
操作码:要完成的操作。
操作数:参与操作的对象。
寻址:寻找操作数或操作数地址的过程。
寻址方式:指令中给出的找到操作数或操作数地址采用的方式。
8086指令系统的寻址方式主要有立即数寻址、寄存器寻址、存储器寻址和I/O端口寻址。
其中,存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址;I/O端口指令IN和OUT使用的端口寻址方式有直接寻址和间接寻址。
3.2 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H](4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX](7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10](10) MOV AX,VAL[BX] (11) MOV AX,[BX][SI] (12) MOV AX,VAL[BX][SI]【解答】(1)MOV AX,21H立即寻址,源操作数直接放在指令中(2)MOV AX,BX寄存器寻址,源操作数放在寄存器BX中(3)MOV AX,[1000H]直接寻址,EA = 1000H,PA =(DS)×10H+EA = 2000H×10H+1000H = 21000H(4)MOV AX,VAL直接寻址,EA = [V AL] = 0050H,PA =(DS)×10H+EA = 2000H×10H+0050H = 20050H(5)MOV AX,[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H(6)MOV AX,ES:[BX]寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10H+EA = 2100H×10H+0100H = 21100H(7)MOV AX,[BP]寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10H+EA = 1500H×10H+0010H = 15010H(8)MOV AX,[SI]寄存器间接寻址,EA =(SI)= 00A0H,PA =(DS)×10H+EA = 2000H×10H+00A0H = 200A0H(9)MOV AX,[BX+10]相对寄存器寻址,EA =(BX)+10D = 0100H+000AH= 010AH,PA =(DS)×10H+EA = 2000H×10H+010AH = 2010AH(10)MOV AX,VAL[BX]相对寄存器寻址,EA =(BX)+[V AL]= 0100H+0050H= 0150H,PA =(DS)×10H+EA = 2000H×10H+0150H = 20150H(11)MOV AX,[BX][SI]基址变址寻址,EA = (BX)+(SI)= 0100H+00A0H = 01A0H,PA = (DS)×10H +EA = 2000H×10H+01A0H = 201A0H(12)MOV AX,VAL[BX][SI]相对基址变址寻址,EA = (BX)+(SI)+[V AL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H3.3 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。
汇编语言第三章答案

3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用BX的寄存器寻址(4) 使用BX的简接寻址(5) 使用BX的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址答:(1) 操作数在指令中,即立即数;(2) EA=D=7237H;(3) 无EA,操作数为(BX)=637DH;(4) EA=(BX)=637DH;(5) EA=(BX)+D=0D5B4H;(6) EA=(BX)+(SI)=8E18H;(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH。
3.2 试根据以下要求写出相应的汇编语言指令(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。
(2) 用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。
(3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。
(4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。
(5) 把数0B5H与(AL)相加,并把结果送回AL中。
答:(1) ADD DX, BX(2) ADD AL, [BX][SI](3) ADD [BX+0B2H], CX(4) ADD WORD PTR [0524H], 2A59H(5) ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。
要求使用以下几种寻址方式:(1) 寄存器间接寻址(2) 寄存器相对寻址(3) 基址变址寻址答:(1) MOV BX, OFFSET BLOCKADD BX, (6–1)*2MOV DX, [BX](2) MOV BX, OFFSET BLOCK 改为:MOV BX, (6-1)*2MOV DX, [BX+(6–1)*2] 也可MOV DX, BLOCK[BX](3) MOV BX, OFFSET BLOCKMOV SI, (6–1)*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。
1632位微机原理与汇编语言课后第三章习题答案

习题 3.9(1)mov al, 23h and 45h or 67h;al=67h(2)mov ax, 1234h/16 + 10h;ax=0133h(3)mov ax, 23h shl 4;ax=0230h(4)mov al, ‘a’ and (not (‘a’-’A’));al=41h(5)mov ax, (76543 lt 32768) xor 7654h;ax=7654h习题 3.10(1)41h 42h 43h 0ah 10h 45h 46h ffh - 04h 04h 04h ffh - 04h 04h04h ffh - 04h 04h 04h(2)10h 00h fbh ffh - - - - - -习题 3.11(1)my1b db 'Personal Computer'(2)my2b db 20(3)my3b db 14h(4)my4b db 00010100b(5)my5w dw 20 dup(?)(6)my6c equ 100(7)my7c equ < Personal Computer >习题 3.14(1)offset varb = 0104h;offset mess = 0114h(2)type buff = 1;type mess = 1;type vard = 4(3)sizeof varw = 4;sizeof buff = 10;sizeof mess = 5(4)lengthof varw =2;lengthof vard = 1习题 3.15(1)mov byte ptr [bx],1000 ;1000超出了一个字节范围(2)mov bx,offset myword[si];OFFSET只能用于简单变量.寄存器的值只有程序执行时才能确定,而offset是汇编过程计算偏移地址,故无法确定,可以改为lea bx,myword[si](3)cmp mybyte1,mybyte2 ;两个都是存储单元,指令不允许(4)mov mybyte1,al+1 ;数值表达式应为运算符加常量,寄存器值只有执行时才能确定,汇编时无法计算(5)sub al,myword ;字节量AL与字量myword,类型不匹配(6)jnz myword ;Jcc指令只有相对短转移寻址方式,不支持间接寻址方式,间接寻址指指令代码中指示寄存器或存储单元,目的地址从寄存器或存储单元中取得习题 3.16.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov ah,1 ;只允许输入小写字母int 21hsub al,20h ;转换为大写字母mov dl,almov ah,2int 21h ;显示mov ax,4c00hint 21hend start习题 3.17ASCTOH macrolocal asctoh1,asctoh2cmp al,'9'jbe asctoh1 ;;小于等于‘9’,说明是0~9,只需要减去30hcmp al,'a'jb asctoh2 ;;大于‘9’,小于‘a’,说明是A~F,还要减7sub al,20h ;;大于等于‘a’,说明是a~f,还要减20h asctoh2: sub al,7asctoh1: sub al,30hendm.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段LEDtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb 80h,90h,88h,83h,0c6h,0c1h,86h,8ehdispmsg db 'input a number:$'crlf db 0dh,0ah,'$'lednum db ?.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov dx,offset dispmsgmov ah,09hint 21hmov ah,1int 21hasctohmov lednum,almov dx,offset crlfmov ah,09hint 21hmov bx,offset LEDtablemov al,lednumxlatmov bl,almov cl,4rol al,clcall htoascmov al,blcall htoascmov ax,4c00hint 21hHTOASC proc;子程序HTOASC:将al低4位表达的十六进制数转换为ASCII码push bxmov bx,offset ASCII ;bx指向ascii码表and al,0fh ;取得一位16进制数xlat CS:ASCII ;换码:AL←CS:[BX+AL]mov dl,almov ah,2int 21hpop bxret;数据区ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39hdb 41h,42h,43h,44h,45h,46hHTOASC endpend start习题3.18mov al, bufXcmp al, bufYjae donemov al, bufYdone: mov bufZ, al习题3.19.;习题3.19.model small.stack.databufX dw -7signX db ?.codestart: mov ax,@datamov ds,axcmp bufX,0 ;test bufX,80hjl next ;jnz nextmov signX,0jmp donenext: mov signX,-1done: mov ax,4c00hint 21hend start习题3.20.;习题3.20.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段bufx dw -1bufy dw -1bufz dw -1.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov dl,'2'mov ax,bufxcmp ax,bufyje next1dec dlnext1: cmp ax,bufzje next2mov bx,bufycmp bx,bufzje next2dec dlnext2: mov ah,2int 21hmov ax,4c00hint 21hend start习题3.21.;数据段number db 78h ;实现假设的一个数值0111 1000B,D3为1addrs dw offset fun0,offset fun1,offset fun2,offset fun3dw offset fun4,offset fun5,offset fun6,offset fun7;取得各个处理程序开始的偏移地址.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov al,numbermov bx,0 ;BX←记录为1的位数mov dl,'?' ;处理数据为零的情况,显示?cmp number,0jnz restartmov ah,2int 21hjmp doneRestart: cmp al,0 ;AL=0结束jz doneagain: shr al,1 ;最低位右移进入CFjc next ;为1,转移inc bx ;不为1,继续,只在不为1的时候增加bx,所以后文补充jmp againnext: push axpush bxshl bx,1 ;位数乘以2(偏移地址要用2个字节单元)jmp addrs[bx] ;间接转移:IP←[table+BX];以下是各个处理程序段fun0: mov dl,'0'jmp dispfun1: mov dl,'1'jmp dispfun2: mov dl,'2'jmp dispfun3: mov dl,'3'jmp dispfun4: mov dl,'4'jmp dispfun5: mov dl,'5'jmp dispfun6: mov dl,'6'jmp dispfun7: mov dl,'7'jmp dispdisp: mov ah,2 ;显示一个字符int 21hpop bxpop axinc bx ;注意,即使Di位不为1,为记录确切的分支入口,仍然需要增加bxjmp restartdone: mov ax,4c00hint 21hend start习题3.22.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据num equ 10 ;数据个数sum db ? ;预留结果单元.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSxor si, si ;位移量清零xor al, al ;取第一个数mov cx, num ;累加次数again: add al, b_data[si] ;累加inc si ;指向下一个数loop again ;如未完,继续累加mov sum, al ;完了,存结果mov ax,4c00hint 21hend start习题3.23;xiti323,空格数目放在total中.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段total dw ?wtemp dw ? ;是writ子程序的入口参数.codestart: mov ax,0040h ;送段地址mov ds, axmov si, 0 ;偏移地址mov cx, si ;计数(循环次数)xor ax, ax;空格计数器清零again: cmp byte ptr [si], 20h ;与空格的ASCII码比较jne next ;不是空格,转inc ax ;是空格,空格数加1next: inc si ;修改地址指针loop again ;cx=cx-1,如cx=0 退出循环mov total,ax ;total中放空格数mov ax,totalmov wtemp,axcall writemov ax,4c00hint 21hwrite proc ;显示有符号10进制数的通用子程序write push ax ;入口参数:共享变量wtemppush bxpush dxmov ax,wtemp ;取出显示数据test ax,ax ;判断数据是0,正数还是负数jnz write1mov dl,'0' ;是0,显示“0”后退出mov ah,2int 21hjmp write5write1: jns write2 ;是负数,显示“-“mov bx,ax ;ax中数据暂存于bx,因为要用dos调用mov dl,'-'mov ah,2int 21hmov ax,bxneg ax ;数据求补(绝对值)write2: mov bx,10push bx ;10压入堆栈,作为推出标志write3: cmp ax,0 ;数据(商)为0,转向显示jz write4sub dx,dx ;扩展被除数dx.axdiv bx ;数据除以10,dx.ax/10,商送ax,余数送dxadd dl,30h ;余数(0~9)转换为ascii码push dx ;数据各位按照先低位后高位依次压入堆栈jmp write3write4: pop dx ;数据各位按照先高位后低位依次弹出堆栈cmp dl,10 ;判断是否结束,标志为10je write5mov ah,2 ;显示int 21hjmp write4write5: pop dxpop bxpop axretwrite endpdpcrlf proc ;使光标回车换行的子程序push axpush dxmov ah,2mov dl,0dhint 21hmov ah,2mov dl,0ahint 21hpop dxpop axretdpcrlf endpend start习题3.24;数据段count equ 100parray dw count dup(?) ;假设有100个数据wordsum dw 0msg db ‘overflow’,’$’;代码段mov cx,countmov ax,0mov bx,offset parrayagain: add ax,[bx]jnc nextmov dx,offset msgmov ah,9int 21h ;显示溢出信息jmp done ;然后,跳出循环体next: add bx,2loop againmov wordsum,axdone: mov ax,4c00hint 21h习题3.25;xiti325.asm;编程把—个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。
Removed_第三章 8088汇编语言程序设计 微机原理 第2版 课后答案

第三章 8088汇编语言程序设计本章的主要内容是汇编语言语句行的构成,源程序的结构,汇编语言程序设计方法。
3.1 重点与难点本章的学习重点是结构化程序设计思想,顺序、分支、循环结构的程序设计,子程序结构的设计与调用,中断指令的应用。
另外,汇编语言伪指令的使用、源程序的结构等也是必须掌握的。
3.1.1 汇编语言语句行的构成1.标记(1)标识符:由数字、字母和下划线组成,且不能以数字开头,最大长度不超过31个字符。
(2)保留字:汇编语言中保留下来的具有特殊用途的字串,如指令、伪指令、寄存器名等都是保留字。
保留字不可用作标识符。
(3)界符:程序或指令中两个部分的分隔符号。
汇编语言源程序中可用的界符:′〈〉;,:? $ () + - = &[] * / ·(4)常量:数字常量,可以使用不同的进制D、B、H、Q;字符串常量,由引号引起来的字符串,相当给出字符所对应的ASCII码串。
2.符号及其属性(1)寄存器:8086/8088 CPU的寄存器可以作为指令的操作数。
(2)变量:即内存单元的符号地址。
变量不能与保留字、段名重名。
它有三个属性:段属性,指变量所在段的段地址;偏移量,指变量所在段的起始地址到变量地址之间的字节数,即偏移(有效、逻辑)地址。
类型,指指变量具有的字节数,包括BYTE、WORD、DWORD、QWORD和TBYTE等。
(3)标号:即代码段中某条指令的符号地址,由编程者根据需要确定的。
标号不能与保留字重名,可使用字母、数字及下划线,但不允许用数字开头,字符个数不超过31个。
标号作为符号地址也有三个属性:段、偏移量和类型(NEAR、FAR)。
3.表达式表达式是作为语句的一个操作数,在汇编时一个表达式得到一个值。
(1)操作数数据——常数、符号常量;存储单元地址——常用符号地址表示。
(2)运算符算术运算符:+、-、*、/、MOD。
对地址的运算仅有+(加)、-(减)运算符。
逻辑运算符:AND、OR、NOT和XOR。
16、32位微机原理、汇编语言和接口技术教程课后习题答案解析
《16/32 位微机原理、汇编语言及接口技术教程》部分习题参考解答第1 章微型计算机系统概述〔习题1.2 〕什么是通用微处理器、单片机(微控制器)、芯片、嵌入式系统?〔解答〕通用微处理器:适合较广的应用领域的微处理器,例如装在机、笔记本电脑、工作站、服务器上的微处理器。
单片机:是指通常用于控制领域的微处理器芯片,其内部除外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。
芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。
嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。
〔习题1.5 〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕:也称处理器,是微机的核心。
它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
存储器:存储器是存放程序和数据的部件。
外部设备:外部设备是指可与微机进行交互的输入()设备和输出()设备,也称设备。
设备通过接口与主机连接。
总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。
习题1.6 〕什么是总线?微机总线通常有哪3 组信号?各组信号的作用是什么?〔解答〕总线:传递信息的共用通道,物理上是一组公用导线。
3 组信号线:数据总线、地址总线和控制总线。
(1)地址总线:传输将要访问的主存单元或端口的地址信息。
(2)数据总线:传输读写操作的数据信息。
(3)控制总线:协调系统中各部件的操作。
习题1.7 〕简答如下概念:(1)计算机字长(2)取指-译码-执行周期(3)(4)中断(5)总线解答〕(1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。
(2)指令的处理过程,即指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。
微机原理第三章习题与参考答案
第三章习题与参考答案3.1 已知 (DS) = 1000H,(ES) = 2000H,(SS) = 3000H,(SI) = 0050H,(BX) =0100H,(BP) =0200H,数据变量DISP的偏移地址为1000。
指出下列指令的寻址方式和物理地址。
(1) MOV AX,0ABH 立即寻址无(2) MOV AX,BX 寄存器寻址无(3) MOV AX,[l000H] 直接寻址 10000H(4) MOV AX,DATA 直接寻址 (DS*16+DATA )(5) MOV AX,[BX] 寄存器间接寻址 10100H(6) MOV AX,ES:[BX] 寄存器间接寻址 20100H(7) MOV AX,[BP] 寄存器间接寻址 30200H(8) MOV AX,[SI] 寄存器间接寻址 10050H(9) MOV Ax,[BX+l0] 寄存器相对寻址 1010AH(10) MOV AX,DISP[BX] 寄存器相对寻址 11100H(1l) MOV AX,[BX+SI] 基址变址寻址 10150H(12) MOV AX,DISP[BX][SI] 相对基址变址寻址 11150H3.2 分别说明下例指令采用的寻址方式和完成的操作功能。
(1) MOV CX,2000H 立即寻址将立即数2000H送CX寄存器(2) MOV DS,AX 寄存器寻址将AX寄存器内容送DS段寄存器(3) AND CH,[1000H] 直接寻址将[DS*16+1000H]单元的内容送CH寄存器(4) ADD [DI],BX 寄存器间接寻址将CL寄存器的内容送[DS*16+DI]单元(5) MOV SS:[3000H],CL 直接寻址将CL寄存器的内容送[SS*16+3000H]单元(6) SUB [BX][SI],1000H 直接寻址将立即数1000H送[DS*16+BX+SI+50H]单元(7) ADD AX,50H[BX][SI] 相对基址变址寻址将[DS*16+BX+SI+50H]单元的内容送AX寄存器(8) PUSH DS 寄存器寻址将DS寄存器的内容送[SS*16+SP]单元(9) CMP [BP][DI],AL 寄存器寻址将AL寄存器的内容送[SS*16+DI+BP]单元3.3 判断下列指令正误,如果错误请指出原因。
微机原理与汇编语言第三章习题解答
3.1 8086/8088 CPU的地址总线有多少位?其寻址范围是多少?答:20条,寻址范围:0~220-1 (1MB)3.2 8086/8088 CPU分为哪两个部分?各部分主要由什么组成?答: BIU(Bus Interface Unit总线接口单元)、EU(Execution Unit执行单元)3.4 8086/8088 CPU中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器也可作为地址寄存器使用?答:八个通用寄存器:AX、BX、CX、DX、SP、BP、SI、DI;三个指针寄存器:IP、SP、BP。
指令指针IP总是指向下一条将要执行的指令在代码段中的偏移地址。
当堆栈中有压入的数据时,堆栈指针SP总是指向栈顶;两个间址指针寄存器:源变址SI和目的变址寄存器DI;在寄存器间接寻址方式中,只有BX、BP、SI、DI能充当地址寄存器。
3.8 在8086/8088 CPU工作在最小模式时,(1)当CPU访问存储器时,要利用哪些信号?(2)当CPU访问外设接口时,要利用哪些信号?(3)当HOLD有效并得到响应时,CPU的哪些信号置高阻?答:当MN/MX为高电平时工作于最小模式、否则为最大模式。
(1)地址线信号、数据线信号、RD、WR、M/IO、DEN、ALE、BHE、DT/R。
(2)地址线信号、数据线信号、RD、WR、M/IO、READY、DEN、ALE、DEN。
(3)DEN、DT/R3.9 当在8086/8088 CPU工作在最大模式时,(1)S—2、S—1、S—0可以表示CPU的哪些状态?(2)CPU的RQ——/GT——信号的作用?答:(1)(2)多处理器的总线控制信号。
共享总线的其他主控者通过该信号申请总线控制权和获得总线授予权。
3.10 试求出下面运算后各个标志位的值,并说明进位标志和溢出标志的区别? 1278H+3469H答:0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0+ 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1= 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1SF=0、CF=0、ZF=0、PF=1、AF=1、OF=03.12什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?答:逻辑地址:在存储器寻址中,程序员在程序中指定的地址称之为逻辑地址。
16。32位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案。
>第3章3.1:汇编语言有什么特点解:汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序3.2编写汇编语言源程序时,一般的组成原则是什么?解:(1)完整的汇编语言源程序由段组成(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内(5)通常,程序还需要一个堆栈段3.3 MODEL伪指令是简化段定义源程序格式中必不可少的语句,它设计了哪7种存储模式?各用于创建什么性质的程序?解:3.4如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程?解:开始位置:用标号指明返回DOS:利用DOS功能调用的4CH子功能来实现汇编停止:执行到一条END伪指令时,停止汇编3.5逻辑段具有哪些属性?解:段定位、段组合和段类型。
3.6给出采用一个源程序格式书写的例题3.1源程序例题3.1:创建一个在屏幕上显示一段信息的程序……解:stack segment stackdb 1024(0)stack endsdata segmentstring db 'Hello,Assembly!',0dH,0aH,‘$’data endscode segment 'code'assume cs:code,ds:data,ss:stackstart: mov dx,offset stringmov ah,9int 21hcode endsend start3.7DOS支持哪两种可执行程序结构,编写这两种程序时需要注意什么?解:(1). EXE程序程序可以有多个代码段和多个数据段,程序长度可以超过64KB通常生成EXE结构的可执行程序(2). COM程序只有一个逻辑段,程序长度不超过64KB需要满足一定条件才能生成COM结构的可执行程序(MASM 6.x需要采用TINY模式)3.8举例说明等价“EUQ”伪指令和等号“=”伪指令的用途解:符号定义伪指令有“等价EQU”和“等号=”:符号名 EQU 数值表达式符号名 EQU <字符串>符号名=数值表达式EQU用于数值等价时不能重复定义符号名,但“=”允许有重复赋值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1 8086/8088 CPU的地址总线有多少位?其寻址范围是多少?
答:20条,寻址范围:0~220-1 (1MB)
3.2 8086/8088 CPU分为哪两个部分?各部分主要由什么组成?
答: BIU(Bus Interface Unit总线接口单元)、
EU(Execution Unit执行单元)
3.4 8086/8088 CPU中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器也可作为地址寄存器使用?
答:八个通用寄存器:AX、BX、CX、DX、SP、BP、
SI、DI;三个指针寄存器:IP、SP、BP。
指令指针IP总是指向下一条将要执行的指令在代码段中的偏移地址。
当堆栈中有压入的数据时,堆栈指针SP总是指向栈顶;两个间址指针寄存器:源变址SI和目的变址寄存器DI;在寄存器间接寻址方式中,只有BX、BP、SI、DI能充当地址寄存器。
3.8 在8086/8088 CPU工作在最小模式时,
(1)当CPU访问存储器时,要利用哪些信号?(2)当CPU访问外设接口时,要利用哪些信号?(3)当HOLD
有效并得到响应时,CPU的哪些信号置高阻?
答:当MN/MX为高电平时工作于最小模式、否则为最大模式。
(1)地址线信号、数据线信号、RD、WR、M/IO、DEN、ALE、BHE、DT/R。
(2)地址线信号、数据线信号、RD、WR、M/IO、READY、DEN、ALE、DEN。
(3)DEN、DT/R
3.9 当在8086/8088 CPU工作在最大模式时,
(1)S—2、S—1、S—0可以表示CPU的哪些状态?(2)CPU的RQ——/GT
——信号的作用?
答:(1)
(2)多处理器的总线控制信号。
共享总线的其他主控者通过该信号申请总线控制权和获得总线授予权。
3.10 试求出下面运算后各个标志位的值,并说明进位标志和溢出标志的区别? 1278H+3469H
答:0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0
+ 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1
= 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1
SF=0、CF=0、ZF=0、PF=1、AF=1、OF=0
3.12什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?
答:逻辑地址:在存储器寻址中,程序员在程序中指定的地址称之为逻辑地址。
其表示形式为:段地址:偏移地址(有效地址EA)。
物理地址:是用来指明存储器的绝对地址。
程序运行时CPU采用物理地址(PA)来获取存储器中数据。
●关系:物理地址=段地址×16+偏移地址。
●物理地址与逻辑地址没有一一对应的关系:如:1000H:0020H 和1002H:0000H的PA=10020H。
3.14 若CS为A000H,试说明现行代码段可寻址存储空间的范围。
答:用16位字长的寄存器能表示的偏移地址的范围
是:0000~FFFFH,而代码段寄存器指明了段基址(段的首地址),故能寻址存储的物理地址范围是:A0000H+0000H (A0000H)~A0000H+FFFFFH (AFFFH) 3.15 设现行数据段位于存储器B0000H到BFFFFH存储单元,DS段寄存器内容为多少?
答:为了提高访存效率,段地址应开始于存储空间的一小节(即能被16整除),即其物理地址的最低一为十六进制数是0,高4位十六进制数就是段地址,故(DS)=B000H。
3.17已知当前段寄存器的值(DS)=021FH,(ES)=0A32,(CS)=234EH,则上述各段在存储器空间中物理地址的首址及末地址号是什么?
答:数据段:021F0+0000H~021F0+FFFFH
附加段:0A320+0000H~0A320+FFFFH
代码段:234E0+0000H~234E0+FFFFH
3.18 若(CS)=234EH时,已知物理地址为25432H。
问若(CS)的内容被指定为1A31H时,物理转移地址应为什么地址号?
答:指令的偏移地址
思考:如果回答物理地址仍然是25432H对否?3.22 8086CPU工作在最小模式(单CPU)和最大模式(多CPU)主要特点是什么?有何区别?
答:8086CPU可以工作在两种工作模式,即最小工作模式和最大工作模式。
最小工作模式用于单机系统,系统中所有总线控制信号全部由8086直接提供,因此系统中的总线控制电路可减到最少;最大工作模式用于多处理机系统,8086作为主处理器,其它的处理器为协处理器,协助主处理器工作。
在最大工作模式下,系统所需要的控制信号均由总线控制器8288提供。
8086具体工作在最大模式还是最小模式,完全由硬件连接决定。
当将CPU的第33号引脚MN/ MX接+5V 时,8086工作在最小模式,当MN/ MX接地时,8086工作在最大模式。
3.23 某系统已知当前(SS)=2580H,(SP)=0800H,请说明该堆栈段在存储器中的物理地址范围。
若已知当前堆栈中已存有10个字节数据,那么SP内容应为什么值?(见图P51)
答:25800~25800+0800H
(SP)=0800H-0AH
3.25 现有6个字节的数据分别为11H,22H,33H,44H,55H,66H,已知它们在存储器中的物理地址为400A5H~400AAH。
若当前(DS)=4002H,请说明它们的偏移地址值。
如果8086CPU要从存储器中读出这些数据,至少需要访问几次存储器,各读出哪些数据?答:400A5H-40020H~400AAH-40020H
8086偶对准原则p49:针对偶地址的数据,一次访存能读出相邻的两个字节,故需要4次:11H、22H33H、44H55H、66H
3.27 选择题:
(1)某微机具有16MB的内存空间,其CPU的地址总线应有( E )条。
16MB=24×220=224
A. 26
B. 28
C. 20
D.22
E. 24
(3)当RESET信号进入高电平状态时,将使8086/8088 CPU的( D)寄存器初始为FFFFH。
(见P55)
A. SS
B. DS
C. ES
D. CS
3.28 填空题:
(1) 8086/8088 CPU执行指令所需操作数地址由(EU)计算出(16)位偏移量部分送(BIU),由(地址加法器)最后形成一个(20 )位的内存单元物理地址。
某系统已知当前(SS)=2580H,(SP)=0800H,请说明该堆栈段在存储器中的物理地址范围。
若已知当前堆栈中已存有10个字
节数据,那么SP内容应为什么值?
(3) 8086/8088 CPU复位后,从(FFFF0H)单元开始读取指令字节,一般这个单元在(ROM)区中,在其中设置一条(转移)指令,使CPU对系统进行初始化。