並指出此程序段完成的是什麽功能?
MOV CL, 4
MOV AL, 87d=57H
MOV DL, AL
AND AL, 0FH
OR AL, 30H
SHR DL, CL
OR DL, 30H
(AL)=37H (DL)=35H
程序段完成功能是:把AL中的16進制數高位送DL,移位取出低位,
再分別轉化為對應的ASCII碼.
2.假定DS=2100H,BX=0100H,SI=0002H;
[21100H]=12H,[21101H]=34H,[21102H]=56H,[21103H]=78H。
2100:100H=12H,34H,56H,78H
分析下列指令執行後寄存器的內容。
(1) MOV AX,[101H] ;ax=5634H
(2) MOV AX,[BX+2] ;ax=[0102H]=7856H
(3) MOV AL,[BX][SI+1] ;al=[0103H]=78H
(4) MOV AX,100H[SI] ;ax=[0102H]=7856H
3.識別下列指令正確與否,對錯誤指令,說明出錯的原因。
(1) MOV DS,100 × ;數據段不允許用立即數賦值
(2) MOV [1000H],23H ×;立即數送入內存需指明是字還是字節
(3) MOV [1000H],[2000H] ×;源和目標不能同為內存數
(4) MOV DATA,1133H ? ;如用DATA定義過數據段,DATA就不能再用作變量名
(5) MOV 1020H,DX ×;目標不能是立即數
(6) MOV AX,[0100H+BX+BP] ×;尋址時,BX、BP只能用壹個
(7) MOV CS,AX ×;CS不能直接賦值
(8) PUSH AL ×;堆棧不能壓入字節,只能壓入字(32位壓入雙字)
(9) PUSH WORD PTR[SI] √
(10) IN AL,378H ×;端口尋址大於0FFH,端口號源要放入DX
(11) OUT 80H,AX √
(12) MOV CX,[AX+SI]×;AX不能用於內存尋址