《微机原理与接口技术第2章习题.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术第2章习题.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.3 设AX=1122H、BX=3344H、CX=5566H、SS=095BH、SP=40H,下述程序执行后AX、BX、CX、DX等通用寄存器的内容各是多少?画出堆栈存储器的逻辑地址及其存储内容和SP指向的示意图。PUSH AXPUSH BXPUSH CX POP BX POP AX POP DX堆栈存储器的逻辑地址、堆栈指示器的指向及栈区的内容如图所示。四个通用寄存器的内容如下:BX=5566HAX=3344HCX=5566HDX=11222.4 设SP=0040H,如果用进栈指令存入5个数据,则SP=,若又用出栈指令取出2个数据,则SP=。解:存入5个数据需要占用10个字节,SP10,所
2、以SP0040H0AH0036H。取出2个数据,让出4个字节,SP4,所以SP0036H04H003AH。所以,如果用进栈指令存入5个数据,则SP=0036H,若又用出栈指令取出2个数据,则SP=003AH。2.8 AX中有一负数,欲求其绝对值。若该数为补码,则用指令 ;若该数为原码,则用指令 。NEG AXAND AX,7FFFH 2.9 分别写出实现如下功能的程序段:(1)将AX中间八位,BX低四位,DX高四位拚成一个新字。MOV CL,4SHL AX,CLSHL BL,CLMOV AL,BLSHR DH,CLOR AL,DH(2)将CX中间八位取反其余位不变。解:方法1:方法2:XOR
3、CX,0FF0HMOV AX,CXMOV CL,4ROR AX,CLNOT ALROL AX,CLMOV CX,AX(3)对数据段中以BX为偏移地址的连续三单元中的无符号数求和。MOV AL,BXMOV AH,0ADD AL,BX+1ADC AH,0ADD AL,2 BXADC AH,0(4)将数据段中以BX为偏移地址的连续四单元的内容颠倒过来。方法1:MOV AL,BXXCHG AL,3 BXMOV BX,ALMOV AL,1BXXCHG AL,2BXMOV 1BX,AL方法2:MOV AX,BXXCHG AH,2BXXCHG AL,3BXMOV BX,AX(5)将BX中的四位BCD数用非压
4、缩BCD数按序放在AL、BL、CL和DL中。MOV DX,BXMOV CL,4SHR BX,CL AND BL,0FHAND DX,0F0FHMOV AL,BHMOV CL,BLMOV BL,DH2.10 一数据段定义为:DATA SEGMENT S1 DB 0,1,2,3,4,5S2 DB 12345COUNT EQU$S1NB DB 3 DUP(2)NW DW 120,256PW DW 1DATA ENDS(1)画出该数据段中数据的存储形式 数据的存储形式如下图所示。(2)在下表中填写各变量的偏移地址和各变量的值。各变量的偏移地址和各变量的值如下表:(3)填写表中程序段各指令执行后,目的寄
5、存器的值,并指出源操作数所使用的寻址方式 目的寄存器的值以及源操作数所使用的寻址方式如下表:(4)改正下列程序段中不正确指令的错误:a.MOV AX,S1 MOV AL,S1 b.MOV BP,OFFSET S2MOV CL,BP MOV CL,DS:BP c.MOV SI,OFFSET NBMOV SI,+MOV BYTE PTR SI,+d.MOV DL,NW+2 MOV DX,NW+2 e.MOV DI,CH MOV DI,CH f.MOV BX,OFFSET S1MOV DH,BX+3 MOV DH,3BX g.INC COUNT 立即数不能增1 h.MOV NB,S2 通过8位寄存器
6、中转 i.MOV AX,BX+S1 MOV AL,S1BX j.ADD AX,DX+NW ADD AX,NWDI 2.11 编写程序将双字变量FIRST中的无符号数乘以4后存入字节变量SECOND数据区中。解:编制的程序段如下:FIRST DD 0A46E5F90HSECOND DB 5 DUP(0)MOV AX,WORD PTR FIRSTMOV DX,WORD PTR FIRST+2MOV SECOND+4,0SHL AX,1RCL DX,1RCL SECOND+4,1SHL AX,1RCL DX,1RCL SECOND+4,1MOV WRORD PTR SECOND,AXMOV WORD
7、 PTR SECOND+2,DX2.12 编写程序将双字变量FIRST中的补码数除以4后存入字节变量THIRD数据区中。解:编制的程序段如下:FIRST DD 0A46E5F90HTHIRDDB 4 DUP(0)MOV AX,WORD PTR FIRSTMOV DX,WORD PTR FIRST+2SAR DX,1RCR AX,1SAR DX,1RCR AX,1MOV WORD PTR THIRD,AXMOV WORD PTR THIRD+2,DX 2.13 编写程序将双字变量FIRST中的补码数求补以后存入字节变量FORTH数据区中。解:编制的程序如下:FIRST DD 0A46E5F90H
8、FORTHDB 4 DUP(0)MOV AX,WORD PTR FIRST NOT AXMOV WORD PTR FORTH,AXMOV AX,WORD PTR FIRST+2NOT AXMOV WORD PTR FIRTH+2,AXADD WORD PTR FORTH,1ADC WORD PTR FORTH+2,02.14 阅读如下源程序,画出程序在9号功能调用之前数据段的内存映象图并指出此程序的功能。BUF DB 78HOBUF1 DB 0AH,0DH,(BUF)=OBUF2 DW 2 DUP(0)MOV AL,BUFMOV AH,ALMOV CL,4SHR AH,CLADD AH,30HAND AL,0FHADD AL,30HXOR BX,BXXCHG AH,ALMOV OBUF2BX,AXMOV OBUF2BX+2,$HMOV DX,OFFSET OBUF1MOV AH,9INT 21H数据段的内存映象图如下图所示:该程序的功能是将字节变量BUF中的两位BCD数以十六进制数形式显示出来具体显示是在下一行的行首显示(BUF)=78H。