可能超过一个字节,故这里和扩展至AH)INCBXLOOPLAB4将数据段中以BX为偏移地址的连续4单元中的内容颠倒过来MOVCX242单元个数除2,循环计数MOVSI,BXADDSI,3;(指向最后一个数据单元,首地址单元个数1)LAB:MOVALBXXCHGAL,SIMOVBXALINCBXDECSILOOPLAB5将BX中的4位压缩BCD数用非压缩数形式按序放在AL,BL,CL和DL中MOVCL,4(注意先后次序,不能用其它寄存器)MOVDL,BLANDDL0FHMOVALBHSHRALCLXCHGBHBLANDBL0FH
整理文本
f
SHRBHCLMOVCLBH6不用乘法指令实现AL(无符号数)乘以20AL242224左移4位,22左移2位MOVAH,0MOVCL,2SALAX,CL;进行乘4操作MOVBX,AX;保留乘4中间结果SALAX,CL;再移2次,相当于乘16ADDAX,BX
710一段数据定义为:
DATASEGMENT
S1DB012345
S2DB‘12345’
COUNTS1
NBDB3DUP2
NWDW120256
PDW1
DATAENDS
1画出该数据段数据存储形式注意:符号常量COUNT不分配存储单元
地址
内容
S10000H
00H
0001H
01H
0002H
02H
0003H
03H
0004H
04H
0005H
05H
S20006H
31H
0007H
32H
0008H
33H
0009H
34H
000AH
35H
NB000BH
02H
000CH
02H
000DH
02H
NW000EH
78H
000FH
00H
0010H
AAH
0011H
FDH
P0012H
FFH
0013H
FFH
整理文本
f
(2)在下表中填写各变量的偏移地址和各变量的值
变量名偏移地址变量值
变量名
S1
0000H
00H
NW
S2
0006H
31H
P
NB
000BH
02H
偏移地址000EH0012H
变量值0078HFFFFH
3填写表中程序段各指令执行后。目的寄存器的值,并指出源操作数所使用的
寻址方式(注意:COUNT是符号常量是立即数)
程序段
目的寄存器的值
源操作数的寻址方式
MOVBX,OFFSETS130003H
立即寻址
MOVSI,OFFSETS2
0006H
立即寻址
MOVCL,COUNT
000BH
立即寻址
MOVBPNW2
FDAAH
直接寻址
MOVDX,WORDPTRNB0202H
直接寻址
MOVALSI3
34H
变址寻址
MOVAHSIBX1
35H
基址变址寻址
MOVCH,BYTEPTRNW3FDH
直接寻址
(4)改正下列不正确的指令错误
aMOVAXS1
改正MOVAX,WORDPTRS1
bMOVBPOFFSETS2改正MOVBXOFFSETS2
MOVCLBP
MOVCLBX
cMOVSIOFFSETNB改正MOVSIOFFSETNB
MOVSI‘’
MOVBYTEPTRSI,‘’
dMOVDLNW2
改正MOVDLBYTEPTRNW2
eMOVDICH
改正MOVDICX
fMOVBXOFFSETS1改正MOVBXOFFSETS1
MOVDH,BX3
MOVDH,BX3
gINCCOUNT
改正MOVBX,COUNTINCBX(符号常数不能加1)
hMOVNBS2
改正MOVALS2MOVNBAL(两个内存变量不能直接传送)
iMOVAXBXS1改正MOVAXWORDPTRBXS1
整理文本
f
jADDAXDXNW改正ADDAXBXNW
整理文本
fr