精品文档
(3)INC 12
(4)MOV [BX],[SI+BP+BUF] (5)MOV BL,AX (6)MOV CS,AX (7)OUT 240H,AL (8)MOV SS,2000H (9)LEA BX,AX (10)XCHG AL,78H
3.4、已知DS=2000H,(21000H)=2234H,(21002H)=5566H,试区别以下3条指令。
MOV SI,[1000H] LEA SI,[1000H] LDS SI,[1000H]
3.5、简述堆栈的性质。如果SS=9B9FH,SP=200H,连续执行两条PUSH指令后,栈顶的物理地址是多少?SS,SP的值是多少?再执行一条POP指令后,栈顶的物理地址又是多少?SS、SP的值又是多少?
3.6、 写出将AX和BX寄存器内容进行交换的堆栈操作指令序列,并画出堆栈变化过程示意图。
3.7、用两条指令把FLAGS中的SF位置1。 3.8、用一条指令完成下列各题。 (1)AL内容加上12H,结果送入AL。
(2)用BX寄存器间接寻址方式把存储器中的一个内存单元加上AX的内容,并加上CF位,结果送入该内存单元。
(3)AX的内容减去BX的内容,结果送入AX。
(4)将用BX、SI构成的基址变址寻址方式所得到的内容送入AX。 (5)将变量BUF1中前两个字节的内容送入寄存器SI中。 3.9、下面的程序段执行后,DX、AX的内容是什么? MOV DX,0EFADH MOV AX,1234H MOV CL,4 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL
3.10、写出下面的指令序列中各条指令执行后的AX内容。
精品文档
精品文档
MOV AX,7865H MOV CL,8 SAR AX,CL DEC AX MOV CX,8 MUL CX NOT AL AND AL,10H
3.11、 如果要将AL中的高4位移至低4位,有几种方法?请分别写出实现这些方法的程序段。
3.12、利用串操作指令,将AREA1起始的区域1中的200个字节数据传送到以AREA2为起始地址的区域2(两个区域有重叠)。
3.13、寄存器BX中有4位0~F的十六进制数,编写程序段,将其转换为对应字符(即ASCII码),按从高到低的顺序分别存入L1、L2、L3、L4这4个字节单元中。 3.14、 试将BUF起始的100个字节的组合BCD码数字,转换成ASCII码,并存放在以ASC为起始地址的单元中。已知高位BCD码位于较高地址中。 3.15、 请给出以下各指令序列执行完后目的寄存器的内容。 (1)MOV BX,-78 MOVSX EBX,BX (2)MOV CL,-5 MOVSX EDX,CL (3)MOV AH,9 MOVZX ECX,AH (4)MOV AX,87H MOVZX EBX,AX
3.16、 请给出以下各指令序列执行完后EAX和EBX的内容。 MOV ECX,12345678H BSF EAX,ECX BSR EBX,ECX
3.17、 给以TAB为首地址的100个ASCII码字符添加奇偶校验位(bit7),使每个字节中的“1”的个数为偶数,在顺序输出到10H号端口。
3.18、 编写一段程序,要求在长度为100H字节的数组中,找出正数的个数并存入字节单元POSIT中,找出负数的个数并存入字节单元NEGAT中。
习题三 参考答案
3.1答:寻址方式是指计算机在执行指令时寻找操作数的方式。8086/8088微处理
精品文档
精品文档
器有以下几种寻址方式:
①立即寻址。操作数(仅限源操作数)直接放在指令中。例如:mov cx,100;mov ah,20h。
②寄存器寻址。操作数在CPU的内部寄存器中。例如:mov es,ax;mov dl,bh。 ③直接寻址。指令中直接给出了操作数的偏移地址。例如:mov ax,[3000h];mov buf,100。
④寄存器间接寻址。操作数的偏移地址放在寄存器bp,bx,si,di四个寄存器中的一个里。例如:mov ax,[si];mov [bx],cx。
⑤寄存器相对寻址。操作数的有效地址为基址寄存器或变址寄存器的内容与指令中指定的位移量之和。例如:mov ax,cnt[si];mov str[bx],ax。
⑥基址变址寻址。操作数的有效地址是一个基址寄存器和一个变址寄存器的和。例如:mov ax,[si+bx];mov [bx+di],dx。
⑦相对基址变址寻址。操作数的有效地址为一个基址寄存器、一个变址寄存器的内容与指令中指定的位移量三者之和。例如:mov ax,cnt[bx][si];mov cnt[bx][si],ax。 3.2. 答:
指令 MOV AX,1200H MOV AX,BX MOV AX,[1200H] MOV AX,[BX] MOV AX,[BX+11H] MOV AX,[BX+SI] MOV AX,[BX+SI+11H] MOV AX,[BP+DI] 3.3 答:
(1)MOV [SI],34H;目的操作数必须指出是字节操作还是字操作,比如可改成MOV BYTE PTR [SI],34H
(2)MOV 45H,AX;目的操作数不能是立即数 (3)INC 12;操作数不能是立即数
(4)MOV [BX],[SI+BP+BUF];两个操作数不能同是存储单元 (5)MOV BL,AX;操作数不匹配
(6)MOV CS,AX;CS不能作为目的操作数
(7)OUT 240H,AL;对于IN和OUT指令,端口号大于FFH时,必须先将端口号放入DX寄存器中
(8)MOV SS,2000H;段寄存器不能用立即数来赋值,可改成MOV SS,AX
精品文档
源操作数寻址方式 立即寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址 基址变址寻址 AX的内容 1200H 0BBH 4C2AH 231AH 3F68H 8934H 5B56H 6778H 精品文档
(9)LEA BX,AX;源操作数必须是内存,如LEA BX,BUFFER (10)XCHG AL,78H;交换指令不能对立即数操作 3.4答:MOV SI,[1000H];(SI)=2234H LEA SI,[1000H];(SI)=1000H
LDS SI,[1000H];(SI)=2234H,(DS)=5566H 3.5答:先进后出。 9BBF0H-4=9BBECH 9BBECH+2=9BBEEH 3.6答:PUSH AX PUSH BX POP AX
POP BX
3.7 答:MOV AX,7FH ADD AX,1
3.8答:⑴ADD AL,12H ⑵ADC [BX],AX ⑶SUB AX,BX ⑷MOV AX,[BX+SI] ⑸MOV SI,BUF1
3.9答:DX=FAD1H,AX=2340H 3.10答:AX=300H 3.11答:①循环左移
mov cl,4 rol al,cl ②循环右移
mov cl,4 ror al,cl ③右移
mov cl,4 shr al,cl
3.12答:从末端开始传送即可解决重叠问题。
mov cx,200
mov si,offset aera1 add si,200
mov di,offset aere2 add di,200
精品文档