4.1直接寻址:指令中直接给出8位端口地址,只能寻址前256个端口 IN AL/AX,8位立即数 OUT8位立即数,AL/AX 4.2间接寻址:将16位端口地址放入DX MOV DX,16位立即数 IN AL/AX,DX OUT DX,AL/AX IN AL, 20H;20HI→AL MOV DX, 210H OUT DX. AL ;AL→[210H 21/133
21/133 4.1 直接寻址:指令中直接给出8位端口地址,只能寻址前256个端口 IN AL/AX,8位立即数 OUT 8位立即数,AL/AX 4.2 间接寻址:将16位端口地址放入DX MOV DX,16位立即数 IN AL/AX,DX OUT DX,AL/AX IN AL, 20H ; [20H]AL MOV DX, 210H OUT DX, AL ;AL[210H]
例题 例:假设DS=2000H,ES=2100H,SS=1500H,SI=00a0H,DI=0, BX=0100H,BP=0010H, 符号地址VAL相当于偏移地址0050H, 指出下列指示的源操作数是什么寻址方式, 写出它的物理地址。(5-10自己练习) (1) mov al,0abh 立即,无 (2) mov ax,val 直接, 20050H (3) mov ax,val DI 寄相,20050H (4) mov ax,val[BX][S相基变,201F0H (5) mov ax,bx 寄存器,无 (6) mov ax,[100h] 直接,20100H (7) mov ax,[bx] 寄间,20100H (8) mov ax,ES:BX] 寄间,21100H (9) mov ax,[BP] 寄间,15010H (10) mov ax,[SI+10H 寄相,200B0H 22/133
22/133 例:假设DS=2000H ,ES=2100H ,SS=1500H ,SI=00a0H ,DI=0 , BX=0100H ,BP=0010H , 符号地址VAL相当于偏移地址0050H , 指出下列指示的源操作数是什么寻址方式, 写出它的物理地址。 (5-10自己练习) ( 1 ) mov al,0abh ( 2 ) mov ax,val ( 3 ) mov ax,val[DI] ( 4 )mov ax,val[BX][SI] ( 5 ) mov ax,bx ( 6 ) mov ax,[100h] ( 7 ) mov ax,[bx] ( 8 ) mov ax,ES:[BX] ( 9 ) mov ax,[BP] (10 ) mov ax,[SI+10H] 立即,无 直接,20050H 寄相,20050H 相基变,201F0H 例题 寄存器,无 直接,20100H 寄间,20100H 寄间,21100H 寄间,15010H 寄相,200B0H
例:(DS)=3000H,(BX)=1100H,(CS)=0062H, (SI)=0002H,(31100H)=52H,(31101H)=8FH, (31162H)=6BH,(31163H)=99H,(31103H)=F6H, (32200H)=AAH,(32201H)=B6H,(32800H)=55H, (32801H)=77H,写出下列指令执行后AX的内容 (3一6)自己练习) (1 MOV AX,1100H[BXI AX=(DS:1100+BX)=(32200H)=B6AAH (2)M0VAX,2800HI AX=(DS:2800)=(32800H)=7755H (3)MOV AX,BX AX=BX=1100H (4)MOV AX,[BX] AX=(DS:BX)=(31100H)=8F52H (5)MOV AX,[1160H+SI] AX=(DS:1160+SI)=(31162H)=996BH (6)MOV AX,4200H 23/133 AX=4200H
23/133 例:(DS)=3000H,(BX)=1100H,(CS)=0062H, (SI)=0002H,(31100H)=52H,(31101H)=8FH, ( 31162H ) =6BH , ( 31163H ) =99H , ( 31103H ) =F6H , (32200H)=AAH,(32201H)=B6H,(32800H)=55H, (32801H)=77H,写出下列指令执行后AX的内容 (3—6)自己练习) (1)MOV AX,1100H[BX] (2)MOV AX,[2800H] (3)MOV AX,BX (4)MOV AX,[BX] (5)MOV AX,[1160H+SI] (6)MOV AX,4200H AX=(DS:1100+BX)=(32200H)=B6AAH AX=(DS:2800)=(32800H)=7755H AX=BX=1100H AX=(DS:BX)=(31100H)=8F52H AX=(DS:1160+SI)=(31162H)=996BH AX=4200H
例:找错 1.MOV 3,SI 2.M0VCH,1234H 3.MOV [BX1,33H 4.MOV AX,CL 5.MOV AL,[BX 6.MOV X,J100H] 7.MOV [100H],[DI] 8.MOV DS,1000H 9.MOV CS.AX 10.MOV [AX],BX 24/133
24/133 1.MOV 3,SI 2.MOV CH,1234H 3.MOV [BX],33H 4.MOV AX,CL 5.MOV AL,[BX] 6.MOV X,[100H] 7.MOV [100H],[DI] 8.MOV DS,1000H 9.MOV CS,AX 10.MOV [AX],BX 例:找错
DEBUG命令: -? assemble A [address]:汇编 compare C range address dump D[address]/[range]:显示存储单元 enter E address [list]:修改存储单元 fill F range list:填写存储单元 go G-address][addresses]:运行 hex H value1 value2 input I port load L[address][drive][firstsector][number]:装入命名过的文件 move M range address name N[pathname][arglist]:命名 output O port byte proceed P [=address][number] quit Q,退出 register ®][register]:显示和修改寄存器[标志寄存器] search S range list trace T-address[value]:跟踪(单步执行) unassemble U[address]/[range]:反汇编 write W[address][drive][firstsector][number]:写文件 25/133
25/133 DEBUG 命令: -? assemble A [address]:汇编 compare C range address dump D [address]/[range]:显示存储单元 enter E address [list]:修改存储单元 fill F range list:填写存储单元 go G [=address] [addresses]:运行 hex H value1 value2 input I port load L [address] [drive] [firstsector] [number]:装入命名过的文件 move M range address name N [pathname] [arglist]:命名 output O port byte proceed P [=address] [number] quit Q:退出 register R[F] [register]:显示和修改寄存器[标志寄存器] search S range list trace T [=address] [value]:跟踪(单步执行) unassemble U [address]/[range]:反汇编 write W [address] [drive] [firstsector] [number]:写文件