汇编作业35答案.docx
《汇编作业35答案.docx》由会员分享,可在线阅读,更多相关《汇编作业35答案.docx(14页珍藏版)》请在冰豆网上搜索。
汇编作业35答案
3.2
(1)adddx,bx
(2)addal,[bx][si]
(3)addob2h[bx],cx
(4)add[0524]h,2a59h
(5)addal,0b5h
3.4
(1)(ax)=1200h
(2)(ax)=0100h
(3)(ax)=2ah
(4)(ax)=12h
(5)(ax)=2ah
(6)(ax)=56h
(7)(ax)b7h
3.6
movbx,1booh
movds,bx
movsi,[2000H]
movbx,[2002H]
movds,bx
movax,[bx]
3.8
(1)立即寻址,不需访问
(2)直接寻址,物理地址=20100h
(3)寄存器寻址,不需访问
(4)直接寻址,21050h
(5)寄存器间接寻址,20100h
(6)寄存器间接寻址,21100h
(7)寄存器间接寻址,15010h
(8)寄存器间接寻址,200A0h
(9)寄存器相对寻址,20110h
(10)寄存器相对寻址,20150h
(11)基址变址寻址,201A0h
(12)相对基址变址寻址,201foh
3.9
(1)movds,bx
mov[14]h,0
(2)movax,[bx]
mov[bx+2],ax
3.10
movax,TABLE
LEAAx,TABLE
3.13
movax,8057h
pushax
movbx,0f79h
pushbx
pupbx
3.14
movbx,[2000h]
movax,ES:
[bx]
3.20
(1)addDATAY,DATAX
(2)movax,DATAX
movbx,DATAX+2
movcx,DATAY
movdx,DATAY+2
addcx,ax
adddx,bx
movDATAY,cx
movDATAY+2,dx
(3)BX=0148h+0237h+1=0380h
(4)movax,DATAX
movbx,DATAY
mulbx
(6)movax,DATAX
movbl,23h
divbl
(7)movax,DATAX
movdx,DATAX+2
movbx,DATAY
divbx
3.30AX,DX逻辑左移4位,将AH的值赋给BL,BL逻辑右移4位,再将DL,BL做逻辑或
3.42比较这两个p,q
ifp>q,ax=1
elseax=2
4.1
(1)AH,BX一个是字节,一个是字,类型不符
(2)不允许两个操作数都使用存储器
(3)SI与DI同为变址寄存器,不能联用
(4)AX不用于寄存器间接寻址方式,且AX上应加上”[]”
(5)溢出
(6)SI本身已经是偏移量了
(7)CS不用做目的寄存器
4.2
(1),(4)非法
4.14
(1)[AX]=1
(2)[AX]=2
(3)[CX]=20
(4)[DX]=40
(5)[CX]=4
5.1
begin:
movah,1
int21h
cmpa1,’a’
jbstop
cmpa1,’z’
jastop
suba1,20h
movd1,a1
movah,2
int21h
jmpbegin
stop:
ret
5.3
dsegsegment
storedb4dup(?
)
dsegends
begin:
movc1,4
movch,4
leabx,store
a10:
movdx,ax
anddx,0fh
movbyteptr[bx],dl
incbx
shrax,cl
decch
jnza10
b10:
movdl,store
movc1,store+1
movb1,store+2
mova1,store+3
ret
5.4
dsegsegment
string1db’Iamaboy’
string2db’Iamaboy!
’
yesdb‘MATCH’,0dh,0ah,’$’
nodb‘NOTMATCH’,0dh,0ah,’$’
dsegends
csegsegment
mainprocfar
assumecs:
cseg,ds:
dseg,es:
dseg
start:
pushds
subax,ax
pushax
movax,dseg
movds,ax
moves,ax
begin:
leasi,string1
leadi,string2
movcx,srtring2-string1
repecmpsb
jindispno
movah,09
leadx,yes
int21h
ret
dispno:
movah,09
leadx,no
int21h
ret
mainendp
csegends
endstart
5.9
movbx,0
movch,4
movcl,4
intput:
shlbx,cl
movah,1
int21h
cmpa1,39h
jaaf
anda1,0fh
jmpbinary
af:
anda1,0fh
adda1,9
binary:
orbl,al
decch
jneinput
dispn:
movcx,16
disp:
movd1,0
rolbx,1
rcldl,1
ordl,30h
movah,02
int21h
loopdisp
ret
5.12
dsegsegment
memdw100dup(?
)
dsegends
csegsegment
mainprocfar
assumecs:
cseg,ds:
dseg,es:
dseg
start:
pushds
subax,ax
pushax
movax,dseg
movds,ax
moves,ax
begin:
movsi,(100-1)*2
movbx,-2
movcx,100
comp:
addbx,2
cmpmen[bx],0
jzcons
loopcomp
jmpfinish
cons:
movdi,bx
cons1:
cmpdi,si
jaenomov
movax,men[di+2]
movmen[di],ax
adddi,2
jmpcons1
nomov:
movwordptr[si],0
loopcomp
finish:
ret
mainendp
csegends
endstart
5.17
datasegment
MEMdb4dup(?
)
Dataends
Codesegment
Assumecs:
code,ds:
data
Mainprocnear
movax,data
movds,ax
movdx,0
movcx,5
rotate:
rolax,4
movbx,0
movbl,al
andbl,0fh
addbl,30h
cmpbl,39h
jbechar
loadmem:
movMEM[dx],bl
adddx,1
looprotate
char:
subbl,10
addbl,41h
jmploadmem
exit:
ret
mainendp
codeends
end
5.18
dsegsegment
gradedw30dup(?
)
rankdw30dup(0)
dsegends
csegsegment
mainprocfar
assumecs:
cseg,ds:
dseg,es:
dseg
start:
pushds
subax,ax
pushax
movax,dseg
movds,ax
moves,ax
begin:
movdi,0
movcx,30
loop1:
pushcx
movcx,30
movsi,0
movax,grade[di]
movdx,0
loop2:
cmpgrade[si],ax
jbegoon
incdx
goon:
addsi,2
looploop2
popcx
incdx
movrank[di],dx
adddi,2
looploop1
ret
mainendp
csegends
endstart
6.3
(PSW)
(AX)
0000
(DS)
1000:
0186
:
0188
:
018A
:
018C
:
018E
0188
SP:
6.5
ip
cs
ip
ip
ip
cs
cs
cs
ax
ax
ax
ax
ax
ds
ds
ds
ds
ds
ds
BP+2
BP+4
BP+8
BP+C
BP+8
BP+4
6.7
datasegment
sdw76
dw69
dw84
dw90
dw73
dw88
dw99
dw63
dw100
dw80
s6dw0
s7dw0
s8dw0
s9dw0
s10dw0
dataends
codesegment
mainprocnear
assumecs:
code,ds:
date
movax,data
movds,ax
pushs2
movs2,0
movcx,11
sc100:
cmps[SI],100
jb90s
adds10,1
qvs:
cmps[SI],90
jb80s
adds9,1
80s:
cmps[SI],80
jb70s
adds8,1
70s:
cmps[SI],70
jb60s
adds7,1
60s:
cmps[SI],60
jbnext
adds6,1
next:
addSI,2
loopSC100
popSI
ret
mainendp
codeends
end