| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
29 | 30 | 31 | 1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
26 | 27 | 28 | 29 | 30 | 31 | 1 | |||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
轉移指令:
(1)段內轉移:只修改IP
短轉移:修改范圍[-128,127],jmp short 標號
近轉移:修改范圍[-32768,32767],jmp near ptr 標號
(2)段外轉移:同時修改CS和IP,jmp far ptr 標號
(3)分類:
無條件轉移指令(jmp)
條件轉移指令(jcxz: if((cx) == 0) jmp short 標號)
循環指令(loop)
過程
中斷 摘要: 一、數據處理的兩個基本問題:(1)內存單元由內存地址和內存長度(由寄存器長度決定)組成
(2)[BX]表示一個內存地址,就像[0]一樣,但是masm將[0]解釋為0了,等基本學會了,換個編譯器了
(3)loop指令
a、(cx)=(cx)-1
b、如果cx!=0轉至標號處,否則向下執行
雖然看起來學得很少啊,但代碼寫了滿多(100多),竊喜。。。
(1)DS寄存器:存放放訪問數據的段地址
mov bx, 1000h
mov ds,bx
mov ax,[0]
(2)編程時自然有數據段
(3)還有棧段,段寄存器SS和寄存器SP,SS:SP指向棧頂元素
(4)PUSH,POP操作棧
PUSH分解:a、SP=SP-2 b、將內容放入SS:SP
(5)需要自己保護棧不越界(入棧過多,棧空出棧等等)
(1)CPU由運算器、控制器、寄存器組成
(2)通用寄存器AX、BX、CX、DX,8086下寄存器是16位的,可以分為2個獨立的8位寄存器使用,處理的數據尺寸就是字、字節
(3)在進行數據運算時,指令(如mov)的兩個操作對象的位數必須是一致的
(4)8086 CPU 物理地址=基本地址(段地址*16)+ 偏移地址。
基本地址必須是16的倍數, 段的長度最大為64K(因為8086的寄存器是16位的)
(5)段寄存器CS、DS、SS、ES
(6)代碼段寄存器(CS)和指令指針寄存器(IP)指示了CPU當前讀取指令的地址
(7)8086 CPU的工作過程
a、從CS:IP讀取指令到指令緩沖區
b、IP += 指令長度
c、執行指令
(8)代碼段: 編程時指定某個段存儲代碼指令, 必須將CS:IP指向代碼段首個指令
(9)改變CS:IP jmp 段地址:偏移地址 只改變IP jmp 某寄存器(ax)
(10)Debug:
R:查看、改變寄存器內容
D:查看內存內容
E:改寫內存內容
U:將內存中機器指令變為匯編指令
T:執行一條機器指令
A:以匯編格式寫入機器指令
(1)CPU進行三類信息的交互:
存儲單元的地址(地址信息)
器件的選擇,讀或寫的命令(控制信息)
讀或寫的數據(數據信息)
(2)CPU依賴總線傳遞信息
地址總線:寬度(n)決定了尋址的最大內存單元(2^n)
控制總線:對外部器件的控制能力
數據總線:寬度(n)決定了數據傳送的速度(一次n bit)
(3)所有的物理存儲器被看作一個由若干存儲單元組成的邏輯存儲器,每個物理存儲器在這個邏輯存儲器占有一個地址空間。
內存地址空間受地址總線的寬度的限制。
軟件使用的一個過程
(1)新建一個流程
(2)增加該流程用戶(角色).如提交人、審核人等
特殊角色:管理員等
(3)建立流程中的各個活動, 如創建, 該活動的責任人為提交人, 需要填寫提交信息。
(4)流程線
(5)生成php網頁,加入管理站點
考慮的初步類圖, 得繼續完善啊