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