- 實驗目的和要求
1、堆棧。堆棧指示器SP和堆棧操作指令PUSH。POP。
2、段寄存器和物理地址計算。
3、查表法和查表指令XLAT。
4、數據串傳送程序和數據串傳送指令MOVS。STOS及重復前輟REP。
5、循環指令ROL。邏輯與指令AND和清方向位指令CLD。
6、偽操作指令DB。
- 實驗環境
Windows7 DOSBox 0.74
- 實驗內容與過程
1.編寫實驗任務要求的程序
2.學習一下調試方法
利用查表方法把DX的內容(16進制數)轉換成ASCII碼:
1)、用A命令鍵入下列程序:
MOV?? BX,1000MOV?? DI,2000MOV?? CX,4LOP: PUSH?? CXMOV?? CL,4ROL?? DX,CLPOP?? CXMOV?? AL,DLAND?? AL,OFXLATCLDSTOSBLOOP? LOPINT?? 20
2)用A命令在1000H處鍵入下列ASCII碼并用D命令檢查之:
DB `0 1 2 3 4 5 6 7 8 9 A B C D E F'
用D命令檢查時注意左邊的ASCII碼值和右邊的字符。
3)用R命令給DX送一個四位的16進制數(例7F8E)。
4)用T命令逐條運行這程序到LOOP指令處,觀察并記錄每次運行結果,特別是SP和堆棧內容(用D命令檢查)
5)用G命令將此程序運行到結束,并用D命令檢查2000H處所轉換的結果。可注意屏幕右邊的ASCII字符與DX是否一致。
3.驗證:數據串搬家程序:
1)用A命令鍵入下列程序:
MOV?? SI,1000MOV?? DI,1500MOV?? CX,0FLOP: MOV?? AL,[SI]MOV?? [DI],ALINC?? SIINC?? DILOOP? LOPINT? 20
2)用A命令DB偽指令在1000H鍵入下列字符串:
‘IBM_PC COMPUTER'
3)用G命令運行此程序,并用D命令檢查目的地址處的字符與源串是否一致。
一致
4.段寄存器概念及字符串傳送指令練習:
1)用A命令鍵入下列程序:
MOV?? SI,0MOV?? DI,0MOV?? AX,1000MOV?? DS,AXMOV?? AX,1500MOV?? ES,AXMOV?? CX,0FCLDREP?? MOVSBINT?? 20
2)用A命令DB偽指令在1000:0000處鍵入字符串'IBM_PC COMPUTER',并用D命檢查之
3)用D命令檢查0F00:1000處內容,看是否一樣。為什么?
?4)用G命令運行此程序,檢查目的地址1500:0000處內容。并記下DS與ES值。
- 實驗結果與分析
1、把實驗準備(二)程序中的目的地址改為1002H,再運行此程序,看能不能把1000H開始的 字符串搬到1002H開始的地方去?
不能,會被覆蓋。
2、修改實驗準備(二)程序以做到把1000H開始的字符串搬到1002H開始的地方去
可以看到整個字符段向后移兩個字節
輸入一1對應十六進制數為 十六進制數為0000000Ih ,取絕對值為1對應從運行結果可以看到存放高字的dx=0000存放 低字的ax=0001
?? 4、將雙字(DX,AX)左移4 位。