当前位置:文档之家› 微机原理答案

微机原理答案

第3章8086/8088指令系统与寻址方式习题3.3 8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。

(1)MOV BX,12 ;目标操作数为寄存器寻址(2)MOV [BX],12 ;目标操作数为寄存器间址 PA=10300H(3)MOV ES:[SI],AX ;目标操作数为寄存器间址 PA=20200H(4)MOV VAR,8 ;目标操作数为存储器直接寻址 PA=10600H(5)MOV [BX][SI],AX ;目标操作数为基址加变址寻址 PA=10500H(6)MOV 6[BP][SI],AL ;目标操作数为相对的基址加变址寻址 PA=12306H (7)MOV [1000H],DX ;目标操作数为存储器直接寻址 PA=11000H(8)MOV 6[BX],CX ;目标操作数为寄存器相对寻址 PA=10306H(9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H3.4 下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。

(1)XCHG CS,AX ;错,CS不能参与交换(2)MOV [BX],[1000] ;错,存储器之不能交换(3)XCHG BX,IP ;错,IP不能参与交换(4)PUSH CS(5)POP CS ;错,不能将数据弹到CS中(6)IN BX,DX ;输入/输出只能通过AL/AX(7)MOV BYTE[BX],1000 ;1000大于255,不能装入字节单元(8)MOV CS,[1000] ;CS不能作为目标寄存器(9)MOV BX,OFFSET VAR[SI] ;OFFSET只能取变量的偏移地址(10)MOV AX,[SI][DI] ;SI、DI不能成为基址加变址(11)MOV COUNT[BX][SI],ES:AX ;AX是寄存器,不能加段前缀3.7 设当前 SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSH BX 指令后,栈顶地址和栈顶2个字节的内容分别是什么?当前栈顶的地址=2FF00H当执行PUSH BX 指令后,栈顶地址=2FEFEH(2FEFEH)=57H(2FEFFH)=34H3.8 设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX和CF中的值。

(1) SHR DX,1 ;DX=3C62H CF=1(2) SAR DX,CL ;DX=03C6H CF=0(3) SHL DX,CL ;DX=18A0H CF=1(4) ROR DX,CL ;DX=2BC6H CF=0(5) RCL DX,CL ;DX=18B7H CF=1(6) RCR DH,1 ;DX=BCC5H CF=0;3.9 设AX=0A69H,VALUE字变量中存放的内容为1927H,写出下列各条指令执行后寄存器和CF、ZF、OF、SF、PF的值。

AX CF ZF OF SF PF(1)XOR AX,VALUE ; 134EH 0 0 0 0 1(2)AND AX,VALUE ; 0821H 0 0 0 0 1(3)SUB AX,VALUE ; F142H 1 0 0 1 1(4)CMP AX,VALUE ; 0A69H 1 0 0 1 1(5)NOT AX ; F596H X X X X X(6)TEST AX,VALUE ; 0A69H 0 0 0 0 13.10 设AX和BX中是符号数,CX和DX是无符号数,请分别为下列各项确定CMP和条件转移指令。

(1)CX值超过DX转移。

(2)AX未超过BX转移。

(3)DX为0转移。

(4)CX值等于小于DX转移。

(1) CMP CX,DXJA NEXT(2) CMP AX,BXJLE NEXT(3) CMP DX,0JZ NEXT(4) CMP CX,DXJBE NEXT3.11 阅11阅读分析下列指令序列:ADD AX,BXJNO L1JNC L2SUB AX,BXJNC L3JNO L4JMP L5若AX和BX的初值分别为以下5种情况,则执行该指令序列后,程序将分别转向何处(L1~L5中的一个)。

(1)AX=13C6H, BX=80DCH(2)AX=0B568H,BX=54B7H(3)AX=42C8H, BX=608DH(4)AX=0D023H,BX=9FD0H(5)AX=9FD0H, BX=0D023H(1)转L1(2)转L1(3)转L2(4)转L5(5)转L5第四章汇编语言程序设计习题4.5 画出下列语句中的数据在存储器中的存储情况。

VARB DB 34,34H,‘GOOD’,2 DUP(1,2 DUP(0))VARW DW 5678H,‘CD’,$+2,2 DUP(100)VARC EQU 12VARW4.6 按下列要求,写出各数据定义语句。

(1)DB1为10H个重复的字节数据序列:1,2,5个3,4。

(2)DB2为字符串‘STUDENTS’(3)DB3为十六进制数序列:12H,ABCDH(4)用等值语句给符号COUNT赋以DB1数据区所占字节数,该语句写在最后。

DB1 DB 16 DUP(1,2,5 DUP(3,4))DB2 DB ‘STUDENTS’DB3 DW 12H,0ABCDHCOUNT EQU DB2-DB14.8 对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?PREP DB ?TABA DW 5 DUP(?)TABB DB ‘NEXT’TABC DD 12345678H(1)MOV AX, TYPE PREP ;AX=1(2)MOV AX, TYPE TABA ;AX=2(3)MOV AX, LENGTH TABA ;AX=5(4)MOV AX, SIZE TABA ;AX=10(5)MOV AX, LENGTH TABB ;AX=1(6)MOV DX, SIZE TABC ;AX=44.10 若自STRING单元开始存放有一个字符串(以字符‘$’结束);(1)编程统计该字符串长度(不包含 $ 字符,并假设长度为两字节)。

(2)把字符串长度放在STRING 单元,把整个字符串往下移两个单元。

程序段为:(1)MOV SI,OFFSET STRINGXOR BX,BXCONT:MOV AL,[SI]CMP AL,‘$’JZ NEXTINC BXINC SIJMP CONTNEXT: MOV AH,4CHINT 21H(2) STRING DB ‘…………. $’COUNT EQU $-STRING:MOV SI,OFFSET STRINGMOV CX,COUNTADD SI,CXCONT: DEC SIMOV AL,[SI]MOV [SI+2],AL]LOOP CONTMOV CX,COUNTMOV STRING,CXMOV AH,4CHINT 21H4.11 将字符串STRING中的‘&’字符用空格代替,字符串STRING“The data is FEB&03”。

程序为:DATA SEGMENTSTRING DB ‘The data is FEB&03’COUNT EQU $-STRINGDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET STRINGMOV CX,COUNTMOV AL,‘$’CONT:CMP AL,[SI]JNZ NEXTMOV BYTE PTR[SI],‘’NEXT:INC SILOOP CONTMOV AH,4CHINT 21HCODE ENDSEND START4.16 键盘输入十个学生的成绩,试编制一个程序统计69~69分,70~79分,80~89分,90~99分及100分的人数,分别存放到S6,S7,S8,S9及S10单元中。

程序为:DATA SEGMENTBUF DB 10 DUP(?)S6 DB ?S7 DB ?S8 DB ?S9 DB ?S10 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET S6XOR AL,ALMOV CX,0504HCONT:MOV [SI],ALINC SILOOP CONTMOV CX,10MOV SI,OFFSET BUFCONT1:MOV AH,1INT 21HSHL AL,CLMOV BL,ALMOV AH,1INT 21HSUB AL,30HOR AL,BLMOV [SI],ALCMP AL,70HJAE NEXT1INC BYTE PTR S6NEXT1:CMP AL,80HJAE NEXT2INC BYTE PTR S7NEXT2:CMP AL,90HJAE NEXT3INC BYTE PTR S8NEXT3:CMP AL,99HJA NEXT4INC BYTE PTR S9JMP NEXT5NEXT4;INC BYTE PTR S10NEXT5:INC SILOOP CONT1MOV AH,4CHINT 21HCODE ENDSEND START第7章基本输入/输出接口习题7.4 现有一输入设备,其数据端口地址为FFE0H,状态端口地址为FFE2H,当其D0为1时表明输入数据准备好。

试采用查询方式,编程实现从该设备读取100个字节数据并保存到2000H:2000H开始的内存中。

程序段为:MOV AX,2000HMOV DS,AXMOV SI,2000HMOV CX,100CONT:MOV DX,0FFE2HCONT1: IN AL,DXTEST AL,01JZ CONT1MOV DX,0FFE0HIN AL,DXMOV [SI],ALINC SILOOP CONTMOV AH,4CHINT 21H7.5 硬件如图7.5所示,试编程实现:S0控制8个发光二极管1亮7暗,S1控制8个 8个发光二极管7亮1暗,S2控制某一亮点(或暗点)以一定时间间隔循环向左移动,S3控制某一亮点(或暗点)以一定时间间隔循环向右移动,两个或两个以上开关闭合,则结束程序。

程序段为:(省略伪指令)BUF1 DB 01HBUF2 DB 80H…MOV DX,200HAGAIN:IN AL,DXXOR BL,BLMOV CX,8CONT:ROR AL,1JNC NEXTINC BLNEXT: LOOP CONTCMP BL,2JAE EXITCMP AL,0FEHJZ 1L7ACMP AL,0FDJZ 1A7LCMP AL,0FBHJZ ZSHLCMP AL,0F7HJZ YSHR1L7A: MOV AL,80HOUT DX,ALJMP AGAIN7A7L:MOV AL,7FOUT DX,ALJMP AGAINZSHL:MOV AL,BUF1ROL AL,1MOV BUF1,ALOUT DX,ALCALL D500MSJMP AGAINYSHR:MOV AL,BUF2ROR AL,1MOV BUF1,ALOUT DX,ALCALL D500MSJMP AGAINEXIT:MOV AH,4CHINT 21H第8章中断习题8.2 已知中断向量表表中地址0020H ~ 0023H的单元中依次是40H,00H,00H,01H,并知INT 08H指令本身所在的地址为9000H:00A0H。

相关主题