1.debug的常用命令
1.r命令
查看、修改CPU中寄存器的值
-r :查看寄存器的值
-r cs :修改寄存器cs的值
2.D命令
查看內存中的內容
1.-d 段地址:偏移地址
-d 1000:01 查看內存100001處的內容
-d 段地址:偏移地址 結尾偏移地址
-d 1000:0 9 查看100000 - 100009
3.E命令
改寫內存中的內容
1.-e 1000:10 0 1 2 3 從1000010開始向內存中寫入0123數據, 如果寫入內存的數據是字符其實實際上存入內存中的是其對應的ascll碼
4.U命令
查看機器碼對應的匯編指令
-u 1000:0 查看1000:0 處的機器碼對應的匯編指令
5.T命令
執行當前的指令
執行cs:ip 在指向的內存單元中的指令,並且使cs:ip指向下一條指令
6.A命令
以匯編指令的形式在內存中寫入機器指令
-a 1000:0
1000:0000 mov ax,1
1000:0003 mov bx,2
1000:0006 add ax,bx
2.將機器碼為b8 20 4e, 對應的匯編指令為mov ax,4E20H的指令,使用匯編指令寫入內存並且執行
第一種方法: 使用e指令向內存中寫入指令(從coding的角度來說,寫入的是機器語言,也就是機器碼)
1.使用e指令,修改內存單元中的內容,改為指令的機器碼
2.機器碼寫入成功
3.修改cs和ip,使其指向的內存單元是我們剛寫入指令的內存單元
4.重新指向cs和ip成功
5.使用t指令執行,內存單元中的指令,觀察ax的值,發現已經執行成功
第二種方法: 使用a指令向內存中寫入指令(從coding的角度來講, 寫入的是匯編語言)
1.使用a指令,向內存單元中直接寫入指令,然后debug將匯編語言轉換為機器語言寫入到內存中(這樣就是方便我們修改指令,不用存入機器碼)
2.使用-t執行指令,也是執行成功
3.棧操作
1.push 寄存器 //入棧
2.pop 寄存器 //出棧
4.dosbox下使用debug程序