提取URL中的DNS : cat *|awk -F[\/] '{print $3}'|sort -u >>gwdns
基本格式
assume cs:codesg
date segment
;資料段
date ends
code segment
;代碼段
code ends
mov ax,4c00h
int 21H
end
進制表示符号
b:二進制
o:八進制
d:十進制
h:十六進制
大小寫轉換 (A=41H a=61H)
轉換為大寫:and al,11011111b
轉換為小寫:or al,00100000b
寄存器 : AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
AX,BX,CX,DX 通用寄存器 //AX為16位寄存器 可以用AH表示其高八位 AL表示其低八位。指派用mov AX,values
CS,DS,ES 段寄存器 //指派時需要用通用寄存器進行中轉,不可以直接指派
IP 指令寄存器 //CS:IP表示目前指令的實體位址 初始時 CS=FFFFH IP=0000H 即第一條指令為FFFF0 指派用jmp CS:IP
SP 棧寄存器 //SS:SP指向棧頂單元。
SI,DI 16位寄存器 //不能拆分為八位 有且隻有bx si di bp四個寄存器可用于尋址。(bx,bp) (si,di)不可同時出現
标志寄存器(flag)
ZF (6) 零标志寄存器 //相關指令執行後,結果為0 則zf=1
PF (2) 奇偶标志寄存器 //相關指令執行後,結果中所有bit中1的總數為偶數,則PF=1
SF (7) 負數标志寄存器 //相關指令執行後,結果為負數,則SF=1
CF (0) 進位标志寄存器 //無符号運算時,如果進位或者借位,則CF=1
OF (11) 溢出标志位 //有符号運算時,如果溢出,則OF=1
DF (10) 方向寄存器 //df=0,si,di遞增 df=1,則遞減 與串傳送指令結合使用
條件轉移指令(cmp之後)
jcxz //cx=0則跳轉
je //等于則跳轉 ZF=1
jne //不等于則跳轉 ZF=0
jb //小于則跳轉 CF=1
jnb //不低于則跳轉 CF=0
ja //大于則跳轉 CF=0且OF=0
jna //不大于則跳轉 CF=1或OF=1
DEBUG
-R [寄存器] //檢視寄存器 修改寄存器的值
-D 段位址:偏移位址 //顯示記憶體中的内容
-E 段位址:偏移位址 資料 資料 // 插入資料到指定位置
-u 段位址:偏移位址 //檢視機器碼對應的彙編指令
-t //執行CS:IP對應的機器指令(STEP IN)
-P //執行CS:IP對應的機器指令(STEP OVER)
-a 以彙編指令的形式寫入機器指令
-q //quit
彙編指令
mov ax,var
movsb //串傳送 es:di=ds:si sidi根據DF标志遞增或遞減
movsw //字單元傳送 每次傳送一個字的長度,si di加2或減2
rep movsb //s:movsb ;loop s
add ax,bx //ax=ax+bx
adc ax,bx //ax=ax+bx+CF 進位加法
sub ax,bx //ax=ax-bx
sbb ax,bx //ax=ax-bx-CF 借位減法
inc ax //ax++
jmp 類型 标号//jmp short/near ptr對應的機器碼中,不包含目的位址 而是包含位移,用補碼表示
jcxz 标号 //if(cx==0),jmp 标号
loop 标号 //cx=cx-1 if(cx!=0) goto 标号 一般cx儲存循環次數 進行嵌套循環時用棧暫存計數
and //按位與
or //按位或
push ax //壓棧,将ax中的資料儲存到SS:SP指向的記憶體單元,SP++
pop ax //出棧,将ss:sp指向的記憶體單元的資料指派給ax,sp-- 棧操作以byte為機關操作
pushf //将标志寄存器的值壓棧
popf //從棧中彈出資料,送入标志寄存器
call //将CS,IP壓棧後跳轉的标号處
ret //pop IP
retf //pop ip pop cs
div reg //除法指令,參數為除數,除數為8位時,被除數儲存在AX中,商儲存在AL中,餘數儲存在AH中
除數為16位時 被除數為32位,DX中存放高16位,AX中存放低十六位。。商儲存在Ax餘數儲存在DX中
mul reg //16位乘法,乘數預設放在AX中。結果高位存放在DX,地位存放在AX中。八位乘數放在AL中,結果放在AX中
int n //中斷指令 ,n為中斷代碼
僞指令
不對應機器指令 不被執行,由編譯器識别
db //定義byte型變量
dw //定義word型變量
dd //定義double word變量
dup //與db,dw,dd結合使用 申請重複的空間。 db 5 dup (123) 開辟十五個字的空間 初始化為123123123123123
offset 标号 //擷取标号的便宜位址
segment //标志段的開始
ends //标志段的結束
end //彙程式設計式編譯的結束 start {。。} end start 聯合知名程式的開始與結束
assume 段寄存器:段名 //關聯兩者,寫在程式開頭 http://hi.baidu.com/dandanfeng166/item/f6cdf5b97322edfc4ec7fd61?qq-pf-to=pcqq.c2c
程式傳回
程式結束後,将CPU的控制權交給調用它的程式
mov ax,4c00h
int 21H //在debug時,一般用P來執行
如果是通過command運作,運作結束後傳回command。如果通過debug運作 運作之後傳回debug。
安全的記憶體區域 :0:200h~02ffh
尋址方式
【idata】 //常量
【bx】 //變量 (結合inc通路由ds開始的連續的一段記憶體)
【bx+idata】 //變量+常量 (數組)
【bx+si】 //變量+變量
【bx+si+idata】 //變量+變量+常量
知名記憶體單元長度
word ptr //操作位元組 mov word ptr ds:【0】,1
byte ptr //操作位