微機原理編程
① 微機原理這本書的重點是編程嗎
重點當然不是編程,可以說沒有任何編程的東西。應該學會的是計算機的體系結構和內部工作原理。謝謝採納
② 微機原理的編程問題 急!!!100分!
DATA SEGMENT ;定義數據段
BUF DB -3,1,2.... ;定義變數
BUF1 DB 1000 DUP(?) ;預留1000位元組的空間
DATA ENDS ;數據段定義結束
CODE SEGMENT ;定義代碼段
ASSUME CS:CODE,DS:DATA ;段寄存器關聯說明
START: ;代碼段第一條指令從這里開始
MOV AX,DATA ;數據段段址→ax
MOV DS,AX ;ax→ds,給數據段段寄存器賦值
LEA SI,BUF ;變數BUF有效地址→SI
MOV CX,1000 ;變數BUF元素個數→CX
MOV AX,[SI] ;變數BUF的第一個字數據→AX
LP: CMP AL,0 ;AL<0?
JL NEXT ;是,轉NEXT處執行
INC SI ;變數BUF元素地址增1
DEC CL ;CL-1→CL
JNZ LP ;CL不等於0,轉LP處執行循環體
NEXT: MOV BUF1,AL ;AL送變數BUF1保存
MOV AH,4CH ;結束程序
INT 21H ;dos功能調用
CODE ENDS ;代碼段定義結束
END START ;編譯到此結束
程序段功能: 從變數BUF的1000個有符號位元組數種找到第一個負數,把這個負數存於BUF1單元。
從程序段來看,這段程序的編者必是初學匯編語言。提兩點建議:
1、有一處錯誤:
DEC CL
從程序功能來看,此處必須要用:
DEC CX
因為你要從1000個有符號位元組數中找出第一個負數,而8位計數器CL能存的最大無符號數是255,那麼用指令:
DEC CL
實際上是只從前255個元素中查找,而漏掉了後面的745個元素。如果前255個元素中沒有負數,執行結果必然是錯誤的。
2、Intel 8086/8088體系結構的內存管理是分段式的,教科書及老師都習慣於這種模式,這是正確的。但我們作為初學,只是練習,無論是數據量還是代碼量,都很有限,沒有必要分這個段、那個段的,完全可以在一個段里進行,即把DS、ES及SS,統統地設置成與代碼段同段。下面,以另一種方式來實現這個功能,僅供參考。
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
BUF DB -3,1,2....
Element equ ($-BUF)/type BUF ;元素個數
BUF1 DB ?
START:push cs
pop ds
push cs
pop es
lea si,BUF
mov cx,Elements
LP: lodsb
cmp al,0
jl $+4
loop LP
MOV BUF1,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
③ 微機原理編程中nop是什麼
微機原理編程中nop匯編指令的用法:
佔用一個位元組的程序存儲空間,產生微小延遲,常用來做代碼地址對齊。
1、佔用一個位元組的程序存儲空間:
這是在對微機與單片機進行匯編指令指令編程時常用的手法,例如,為了刻意使某個程序段在一個特定的地址開始,或在某個程序段中刪除了一些指令而還刻意要求地址不變,基於這些的需求,通常是應用NOP指令匯編指令來充填空閑的地址。
對於S7-STL編程語言來講,通常是應用NOP指令匯編指令來充填被刪除的指令的位置,以便留言痕跡,以便備查。通常的做法是,在刪除的指令的位置寫為NOP指令,重要的是在其注釋之處寫上原指令,留有備忘的痕跡。
2、產生微小延遲:
這是在微機與單片機進行匯編指令指令編程時常用的手法,微機與單片機的編程並非是周期掃描的執行機制,例如,在讀取某個外圍通道輸入值時,先發出一個請求命令,帶一定延時後,再讀其數值,通常是應用NOP指令來進行延時。
對於西門子PLC來講,其執行程序的機制是周期掃描,NOP指令只是起到佔用周期掃描時間的作用,對於那些已固定了掃描周期時間的PLC而言,是沒有意義的。
3、常用來做代碼地址對齊:
這個純粹是對與對微機與單片機進行匯編指令指令編程來講的。這與上述的1、佔用一個位元組的程序存儲空間的作用相同,,即匯編編譯後生成機器代碼的效果。
④ 微機原理編程題
MOV AL,[40H];從數據段下偏移地址為40H的地址中取數據送入AL
AND AL,OFH;此處OFH應為0FH,剛才取出的數據與0FH相與,也即高四位清零,第四位保持不變
MOV AH,AL;低四位數據送入AH
MOV AL,[41H];再從[41H]單元取數據
AND AL,OFH;保留低四位
MOV CL,4;後面怎麼沒用到?
SHL AH,CL;(本條指令丟失了)
OR AL,AH;[40H]單元的低四位與[41H]單元的高四位組合
MOV [42H],AL組合以後的結果存儲到【42H】單元
⑤ 微機原理編程
CODESEGMENT
ASSUMECS:CODE
START:PUSHCS
POPDS
PUSHCS
POPES
MOVCX,10000
MOVDX,1
MOVAX,0
@1:
ADDAX,DX
JC@2;有符號數范圍則改為jo@2
INCDX
LOOP@1
@2:
MOVAX,DX
DECDX
MOVAX,DX
MOVBX,10
CALLDSPAXX
MOVAH,4CH
INT21H
;================================
;輸出ax的值,輸出的進位制在bx中設定,bx=2~16
DSPAXXPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHF
XORCX,CX
;MOVBX,16
@DSPAXX_1:
XORDX,DX
DIVBX
INCCX
ORDX,30H
PUSHDX
CMPAX,0
JNE@DSPAXX_1
MOVAH,2
@DISPAXX_2:
POPDX
CMPDL,3AH
JB@DISPAXX_3
ADDDL,7
@DISPAXX_3:
INT21H
LOOP@DISPAXX_2
MOVDL,32
INT21H
POPF
POPDX
POPCX
POPBX
POPAX
RET
DSPAXXENDP
;===============================
CODEENDS
ENDSTART
⑥ 微機原理,匯編語言,編程題
第三題:
1+2+3+……+n >= 500
大於等於?
一千也是大於等於。
一萬也行,兩萬也行。。。
這就沒有邊了。
⑦ 微機原理8259A初始化編程
在8259A內部有兩組寄存器,一組為命令寄存器,用於存放CPU寫入的初始化命令字ICW1~ICW4(initialization
command
words);另一組為操作命令寄存器,用於存放CPU寫入的操作命令字OCW1~OCW3(operation
command
words)。
初始化命令字ICW的格式:
當地址線A0為1時,8259A提供了4個(ICW1~ICW4)初始化命令字,並規定了嚴格的初始化步驟。
初始化編程為:
MOV
AL,13H
OUT
200H,AL
;
設置ICW1(邊沿觸發,單片,需要ICW4)
MOV
AL,80H
OUT
201H,AL
;
設置ICW2(中斷類型號)
MOV
AL.13H
OUT
201H,AL
;
設置ICW4(特殊全嵌套,非緩沖,自動中斷結束)
8259A是中斷系統的核心器件,對它的初始化編程要涉及中斷系統的軟、硬體的許多問題,而且一旦完成初始化,所有硬體中斷源和中斷處理程序都必須受其制約。
⑧ 微機原理 編程題
CODESEGMENT
ASSUMECS:CODE
TABLE1DB0,1,4,9,16,25,36,49,64,81,100,121,144,169,186,225
DB100DUP(0)
START:
PUSHCS
POPDS
PUSHCS
POPES
MOVBL,0
@1:
MOVAH,1
INT21H
CMPAL,13
JE@2
SHLBL,1
MOVBH,BL
SHLBH,1
SHLBH,1
ADDBL,BH
ANDAL,0FH
ADDBL,AL
JMP@1
@2:
CALLLFCR
MOVAL,BL
LEABX,TABLE1
XLAT
CALLDSPAL
MOVAH,4CH
INT21H
LFCR:PUSHAX
PUSHDX
MOVAH,2
MOVDL,13
INT21H
MOVDL,10
INT21H
POPDX
POPAX
RET
;===============================
DSPALPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHF
XORAH,AH
XORCX,CX
MOVBL,10
@DSPAL1:
DIVBL
INCCX
MOVDL,AH
XORAH,AH
ORDX,30H
PUSHDX
CMPAL,0
JNE@DSPAL1
MOVAH,2
@DISPAL2:
POPDX
INT21H
LOOP@DISPAL2
MOVDL,32
INT21H
POPF
POPDX
POPCX
POPBX
POPAX
RET
DSPALENDP
;================================
CODEENDS
ENDSTART
⑨ 微機原理編程 求和問題,急!!!!
1.把所有的待處理數放到一個數組里,這個數組定義為a。另外定義一個正數變數b,初始化為0
2.用for循環對a里的所有數除以2判斷是否是偶數。(有餘數就不是偶數)
3.是偶數的,a里的數保持不變,同時b自加一;不是偶數的,改為0,b不變。
4.a里的所有數據處理完後,對a做加法,把所有偶數的和求出。b的數為偶數個數。
⑩ 微機原理,編程
。。。其中 X 和Y 都是內存數據...。。。
胡說!
出題的人,根本就不懂微機原理。
微機原理,講的是:CPU、存儲器、IO介面。
在微機原理中,哪有什麼數據?
正確說法應該是:
。。。X、Y,都是存儲器的地址。。。
