. (3)基址加位移寻址 (4)比例变址寻址 (5)比例变址加位移寻址 (6)基址加比例变址寻址 (7)基址加比例变址加位移寻址
3.16 对于立即寻址的指令,有8位、16位及32位的立即寻址的指令,各列举2条指令(一条是传送指令,另一条是加法指令)。
解:
8位立即寻址指令 (1) MOV AH,2 (2) ADD AL,3
16位立即寻址指令 (1) MOV AX,1234H (2) ADD DX,3456H
32位立即寻址指令 (1) MOV EAX,12345678H (2) ADD EDX,12345678H
3.17 用移位指令将ESI中容移入EDI中,如何实现? 解:
.model small
.386 .code .startup
mov esi,11223344h mov edi,12345678h shrd edi,esi,16 rol esi,16
shrd edi,esi,16
.exit End
.
《微机原理与接口技术》复习题
3.18 将EBX中存放的值清零,实现的方法有哪一些? 解:
(1) SUB EBX,EBX (2) AND EBX,0 (3) XOR EBX,EBX
第4章
1.该数据段在存中的分配图如下。 变量 Buf→ num→ point1→ point2→ str→ - -
容 1 2 3 34h 12h 05h EA 0 1 2 3 4 5 6 7 8 9 10 00h 08h 11 12 00h data 31h 13 14 15 16 14
. 32h 33h 0ffh 02h 0ffh 02h 17 18 19 20 21 22 2.将下列程序段所定义字符串中的小写字母均改为大写字母,并放回原处,原大字母不变,最后,用DOS的9号功能显示这串大写字符,请完善下列程序。
.model small
.data
x db ‘Hello EVEryBODY !’,’$’ .code
.startup 解:
程序如下: .model small .386 .data
x db 'Hello EVEryBODY !','$' .code
.startup lea bx,x .repeat
mov al,[bx]
.if al >= 'a' && al <= 'z' sub al,20h mov [bx],al .endif inc bx
.until al = = '$' lea dx,x mov ah,9 int 21h .exit
.
《微机原理与接口技术》复习题
end
3.设变量名VAL1、VAL2及SUM的数据类型属性都是双字属性,VAL1和VAL2中分别存放了一个32位的加数和被加数,SUM用于存放和数。
(1)选用简化段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单元。
(2)选用完整段格式编程,实现上述相同的功能。提示:只能使用16数相加。 解:
程序一,简化段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单元。
.model small .386 .data
val1 dd 12345678h val2 dd 87654329h sum dd ? .code
.startup mov eax,val1 add eax,val2 mov sum,eax .exit end
程序二,完整段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单元。
data segment
val1 dd 12345678h val2 dd 87654329h sum dd ? data ends code segment
assume cs:code,ds:data start:
mov ax,data mov ds,ax
mov ax,word ptr val1 add ax,word ptr val2 mov word ptr sum,ax mov ax,word ptr val1+2
- -
16
相关推荐: