学习16位DOS汇编笔记
生活随笔
收集整理的這篇文章主要介紹了
学习16位DOS汇编笔记
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
ax ? ? ? //是16位的寄存器,最大可以存65535
ah,al ?//是8位的寄存器,最大可以存255
cs:ip ?//指向程序下一條執(zhí)行的指令
ds ? ? //數(shù)據(jù)段寄存器
ss ? ? //棧段寄存器
sp ? ? //棧頂指針
物理地址=段地址*16(十進(jìn)制)+偏移地址
物理地址=段地址*10(十六進(jìn)制)+偏移地址
物理地址20030 段地址2000 偏移地址30
Debug的常用命令
r //查看和修改寄存器
d //查看內(nèi)存
e //修改內(nèi)存
u //反匯編
t //單步執(zhí)行
a //寫匯編指令
g //相當(dāng)直接運(yùn)行
p //執(zhí)行完返回
jmp 2000:0030 ?//相當(dāng)于mov cs,2000;mov ip,0030,但不能直接給段寄存器傳數(shù)據(jù)
//計(jì)算2的n次方
2000:0000 mov ax,1
2000:0003 add ax,ax
2000:0005 jmp 2000:0003
//查看rom的刷寫時(shí)間,但是無法修改
-d fff0:0000 ff
mov bx,1000
mov ds,bx
mov al,[0]
mov [10],al
//壓棧和出棧,一個(gè)棧的最大是0-ffffh,64KB
mov ax,1000H
mov ss,ax
mov sp,ffea
push ax ?//sp減2
push bx ?//sp減2
pop ax ? //sp加2
pop bx ? //sp加2
//
mov bx,0100h
mov ax,[bx] //將0100地址的數(shù)據(jù)傳遞給ax
mov [bx],ax //將ax的數(shù)據(jù)傳遞給bx指向的地址
mov al, [5+bx] ? ?; 指明一個(gè)內(nèi)存單元
si和di寄存器和ax,bx類似, 只是不能拆分為兩個(gè)8位寄存器
//各種尋址方式 [idata] [bx] [bx+idata] [bx+si] [bx+si+idata] 只有bx, si, di, bp這四個(gè)寄存器可以進(jìn)行尋址
待續(xù)......
ah,al ?//是8位的寄存器,最大可以存255
cs:ip ?//指向程序下一條執(zhí)行的指令
ds ? ? //數(shù)據(jù)段寄存器
ss ? ? //棧段寄存器
sp ? ? //棧頂指針
物理地址=段地址*16(十進(jìn)制)+偏移地址
物理地址=段地址*10(十六進(jìn)制)+偏移地址
物理地址20030 段地址2000 偏移地址30
Debug的常用命令
r //查看和修改寄存器
d //查看內(nèi)存
e //修改內(nèi)存
u //反匯編
t //單步執(zhí)行
a //寫匯編指令
g //相當(dāng)直接運(yùn)行
p //執(zhí)行完返回
jmp 2000:0030 ?//相當(dāng)于mov cs,2000;mov ip,0030,但不能直接給段寄存器傳數(shù)據(jù)
//計(jì)算2的n次方
2000:0000 mov ax,1
2000:0003 add ax,ax
2000:0005 jmp 2000:0003
//查看rom的刷寫時(shí)間,但是無法修改
-d fff0:0000 ff
mov bx,1000
mov ds,bx
mov al,[0]
mov [10],al
//壓棧和出棧,一個(gè)棧的最大是0-ffffh,64KB
mov ax,1000H
mov ss,ax
mov sp,ffea
push ax ?//sp減2
push bx ?//sp減2
pop ax ? //sp加2
pop bx ? //sp加2
//
mov bx,0100h
mov ax,[bx] //將0100地址的數(shù)據(jù)傳遞給ax
mov [bx],ax //將ax的數(shù)據(jù)傳遞給bx指向的地址
mov ax,ds:[0] ?//MASM32 匯編里的表示
//and指令
mov al,01100011b
and al, 00111011b ?;將操作對象的相應(yīng)位設(shè)為0, 其他位不變
結(jié)果 00100011b
//or指令
mov al, 01100011b
or ?al, ? 00111011b ? ;將操作對象的相應(yīng)位設(shè)為1,其他位不變
結(jié)果 ? ? 01111011b
// bx=61h, 一個(gè)字母, 不管它原來是大寫還是小寫, 將它的二進(jìn)制第5位置0, ?肯定就是大寫字母了,?and al, 11011111h
mov al,[bx]
and al,dfh ?;轉(zhuǎn)換成大小'A' ? 41H
mov [bx],al
mov al, [5+bx] ? ?; 指明一個(gè)內(nèi)存單元
si和di寄存器和ax,bx類似, 只是不能拆分為兩個(gè)8位寄存器
//各種尋址方式 [idata] [bx] [bx+idata] [bx+si] [bx+si+idata] 只有bx, si, di, bp這四個(gè)寄存器可以進(jìn)行尋址
db 重復(fù)的次數(shù) dup (重復(fù)的字節(jié)型數(shù)據(jù))
dw 重復(fù)的次數(shù) dup (重復(fù)的字型數(shù)據(jù))
dd 重復(fù)的次數(shù) dup (重復(fù)的雙字型數(shù)據(jù))
db 3 dup (0)
db 3 dup (0,1,2)
db 3 dup('abc', 'ABC')
待續(xù)......
總結(jié)
以上是生活随笔為你收集整理的学习16位DOS汇编笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FreeBSD挂截U盘和光盘
- 下一篇: 16位汇编 寄存器的操作