當前位置:首頁 » 編程軟體 » 微機編程程序

微機編程程序

發布時間: 2022-09-13 13:13:23

A. 微機原理:用匯編語言編制一段程序

1.編制一段程序求出下列公式中Z的值並放在RESULT單元,注X,Y,RESULT分別定義成字類型變數
Z=((X+Y)*4-Y)/2
答:
MOV
AX,X
ADD
AX,Y
SHL
AX,1
SHL
AX,1
SUB
AX,Y
SHR
AX,1
MOV
RESULT,AX
2.試編寫一小側面硬指令序列,在屏幕上顯示出"Hello
everybody!"字元串,該字元串已在數據段定義好為變數string
答:
LEA
DX,string
MOV
AH,9
INT
21H

B. 微機原理編程

DATA SEGMENT
CLO DW ?
SUM DW ?
DATA ENDS

STACK SEGMENT
ST1 DW 64 DUP(?)
STACK ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX ;將數據段段基址裝入ds
MOV AX,STACK
MOV SS,AX ;將堆棧段段基址裝入ss
MOV CX,2 ;統計個數,初始值
MOV AX,1 ;被加元素,第一個是1
MOV DX,2 ;加數放在dx里,第一個是2
LG: ADD AX,DX ;兩個元素相加
CMP AX,1000 ;和1000進行比較
JA NEXT ;大於1000跳轉next,否則向下執行
INC CX ;否則個數加一
INC DX ;加數加一
JMP LG ;返回循環
NEXT:
MOV CLO,CX ;將累加個數送入CLO單元
MOV SUM,AX ;將累加和送入sum單元
MOV AH,4CH
INT 21H ;返回dos
CODE ENDS
END START

C. 微機原理 編寫程序段,或補充完成完整程序

1、用寄存器BX和位移量COUNT的寄存器相對定址方式,把存儲器中的一個字與AX寄存器之內容相加,並把結果保存在存儲器單元中。
解:ADD AX , [BX+COUNT]
MOV [BX+COUNT] , AX
2、將AX寄存器的內容減去CX寄存器的內容,並把結果保存在AX寄存器中。
解:SUB AX ,CX
3、下列程序的功能是:利用DOS的功能調用,顯示一串字元;通過填空將下列程序補充完整。
STACK SEGMENT SYACK
DB 256 DUP (?)
TOP LABEL WORD
(STACK ENDS )
DATA SEGMENT
BUF DB 『 I WISH YOU SUCCESS! $ 『
DATA ENDS
CODE SEGEMENT
ASSUME (CS:CODE,DS:DATA,SS:STACK)
START: MOV AX,( DATA )
MOV DS,( AX )
MOV AX,( STACK )
MOV SS,AX
LEA SP, TOP
LEA DX,( BUF )
MOV AH,9
INT ( 21H )
(MOV AH, 4CH )
INT 21H
CODE ENDS
END START

D. 微機原理8255編程

;;8255硬體連接及軟體設置:
;;B口方式0輸入,PB0~PB3分別連接K1~K4;
;;A口方式0輸出,PA0~PA3外接驅動電路控制燈的4種動作;
;;驅動電路,可由74LS06、ULN2003作反相電流放大驅動繼電器或固體繼電器組成;
;;C口閑置;
;;按以上設置,8255方式控制字是82H ;
;;在PC機作主機的系統中,8255的4個寄存器地址是:
;;A口60H,B口61H,方式控制寄存器63H。

;;匯編程序如下:

SSEG SEGMENT PARA STACK ;堆棧段定義
DW 30H DUP(?)
SSEG ENDS

CSEG SEGMENT ;代碼段定義
ASSUME CS:CSEG,DS:CSEG

ORG 200h ;主程序首址
START: MOV AL, 82H ;方式控制字
MOV DX, 63H
OUT DX, AL ;方式控制字送入方式控制寄存器
Scan: IN AL,61H ;掃描從B口讀入的K1~K4狀態
CALL PRC1 ;開燈、關燈
CALL PRC2 ;是否暫停
CALL PRC3 ;是否換向
CALL PRC3 ;是否移動
JMP Scan ;主程序循環

PRC1 PROC NEAR ;"開/關燈"操作 子程序定義
PUSH AX ;B口狀態進棧暫存
TEST AL,00000001B ;檢測PB0輸入狀態
JZ CloseL ;若PB0低電平,表示K1斷,轉CloseL處執行
OpenL: OUT 60H,AL ;若PB0高電平,表示K1通,PA0輸出高電平,開燈
JMP RT1 ;轉RT1處指令返回
CloseL: MOV AL,00000000B ;PA0輸出低電平
OUT 60H,AL ;關燈
RT1: POP AX ;B口狀態出棧
RET ;返回主程序
PRC1 ENDP ;子程序定義完畢

PRC2 PROC NEAR ;"暫停"操作 子程序定義
PUSH AX ;B口狀態進棧暫存
TEST AL,00000010B ;檢測PB1輸入狀態
JZ RT2 ;若PB1低電平,表示K2斷,不暫停
PAUS: OUT 60H,AL ;若PB1高電平,表示K2通,PA1輸出高電平,暫停
RT2: POP AX ;B口狀態出棧
RET ;返回主程序
PRC2 ENDP ;子程序定義完畢

PRC3 PROC NEAR ;"換向"操作 子程序定義
PUSH AX ;B口狀態進棧暫存
TEST AL,00000100B ;檢測PB2輸入狀態
JZ RT3 ;若PB2低電平,表示K3斷,不換向
CHG: MOV AL,00000101B ;若PB2高電平,表示K3通
OUT 60H,AL ;PA2、PA0輸出高電平、換向,燈保持亮
RT3: POP AX ;B口狀態出棧
RET ;返回主程序
PRC3 ENDP ;子程序定義完畢

PRC4 PROC NEAR ;"移動"操作 子程序定義
TEST AL,00001000B ;檢測PB3輸入狀態
JZ RT4 ;若PB3低電平,表示K4斷,不移動
MOVE: MOV AL,00001001B ;若PB3高電平,表示K4通
OUT 60H,AL ;PA3、PA0輸出高電平、移動,燈保持亮
RT4: RET ;返回主程序
PRC4 ENDP ;子程序定義完畢

CSEG ENDS ;代碼段定義完畢
END START ;主程序結束

E. 微機 匯編 編程

code segment
assume cs:code
start:
mov ah,1;鍵盤輸入一個字元
int 21h
cmp al,41h ;判斷與'A'的關系
jb tj ;小於'A',則不是字母
cmp al,5ah ;判斷與'Z'的關系
ja daxie ;大於'Z',可能是小寫字母
add al,20h;大寫轉小寫
jmp disp;顯示小寫字母
daxie:
cmp al,61h ;判斷與'a'的關系
jb tj ;小於'a',則不是字母
cmp al,7ah ;判斷與'z'的關系
ja tj ;大於'z',則不是字母
sub al,20h;小寫轉大寫
disp:
mov dl,al
mov ah,2
int 21h
tj:
jmp start
mov ax,4c00h;結束程序
int 21h
code ends
end start

F. 1+2+3+...+100微機原理程序編程

:對於給定字元串的每一個字元,檢查它是否是數字或大寫字母,是則作相應處理,不是則繼續讀下一個.由此可以看出字元串什麼時候結束得有限定條件,可以將字元串長度保存在寄存器或存儲器中,也可設字元串以特定字元結束,通常以0結束.為了不和別人重復,設長度保存在前面的單元中.
DATAS SEGMENT
STRLEN DB 6
STR DB "38A4CE"
DATAS ENDS
編程時進行
1 設指針指向第一個字元,CX為循環次數
2 讀當前指向字元
3 是數字么,是則替換為#
4 是大寫字母么,是則改為小寫
4 指針加1
5 LOOP 第2步
是數字或是大寫字母可用函數表示
以下附代碼:
DATAS SEGMENT
STRLEN DW 6
STR DB "38A4CE",13,10,'$'
DATAS ENDS
STACKS SEGMENT
DB 100 DUP (0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV DX,OFFSET STR
MOV AH,9
INT 21H;顯示修改前的字元串
MOV CX,[STRLEN];字元串長度值送CX控制循環次數
MOV SI,OFFSET STR;SI指向第一個字元
ABC:MOV AL,BYTE PTR [SI];讀當前指向字元
CALL IS0_9;是數字么?
JC NEXT1
MOV BYTE PTR [SI],'#';CF=0表示是0-9
JMP AG
NEXT1:CALL ISA_Z;是大寫字母么?
JC AG
ADD BYTE PTR [SI],20H;CF=0表示是A-Z
AG: INC SI
LOOP ABC
MOV AH,9
MOV DX,OFFSET STR
INT 21H;顯示修改後的字元串
MOV AH,4CH
INT 21H
;入口參數:AL為待比較字元
;出口參數:如是0-9則CF=0,否則為1
IS0_9:
CMP AL,'0'
JB NOO
CMP AL,'9'
JA NOO
CLC
RET
NOO:STC
RET
;入口參數:AL為待比較字元
;出口參數:如是A-F則CF=0,否則為1
ISA_Z:
CMP AL,'A'
JB NOO1
CMP AL,'Z'
JA NOO1
CLC
RET
NOO1:STC
RET
CODES ENDS
END START

G. 微機原理: 編程程序,將AX寄存器中的4位十進制數轉換為4個ASCII碼,依次存放在BUF開始的4個連續位元組單元

DATA SEGMENT
BUF DB 4DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN: MOV BX,DATA
MOV DS,BX
MOV DL,4
MOV CL,4
LEA SI,BUF
LOP: ROL AX,CL
MOV BL,AL
AND BL,0FH
OR BL,30H
MOV [SI],BL
INC SI
DEC DL
JNZ LOP
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN

H. 如何在微機上編程數控程序PRG

擴展名是PRG,但是用隨便一個軟體都能打開,是文本格式的。可以先打開記事本,再把你的文件拖進去。

I. 計算機怎麼編程

1、如果只是單純輔助的編寫一些小軟體來輔助自己的主要工作,那麼學習編程就相對來說學得簡單一些。先了解目前的開發語言和環境,結合自己需要做什麼小軟體,然後找一門開發語言來學習就可以達到目的。但如果比較復雜的軟體,因為基礎和學習的深度不夠,要開發這個軟體就有些難度了。如果輔助性質的小軟體,推薦使用VB.net,特別是桌面軟體。這個開發環境比較容易入手,控制項拖動,使用的語法比較容易理解,很容易上手。或C#.net,對於新手而且相對VB.net來說,個人感覺沒有這么容易好理解。花一個月時間可能就能做一個小軟體了。當然要參與到大型項目中,完全新手那就不是一個月的時間能解決的了。

2、如果是要從事軟體開發的工作,那麼學習時間就比較長了。對於軟體開發者來說,不只是開發語言,還有計算機、網路的相關基礎知識才行。

①:先說開發語言。確定好自己今後要從事的主要的開發語言,然後開始學習。比如:選擇.net系列、或者Java、或者python等等。可以在網路上搜索一些成套的基礎教程(一定從成套的教程,因為是由淺入深,學起來系統性而且容易上手),開始學習。配置好環境,一步一步按照教程進行實踐。

②:基礎知識。作為軟體開發者來說,單純只具有開發語言的知識是很難有大的發展的。因為對於計算機、軟體、系統、資料庫、網路等等不深入了解的話,一旦涉及到深入的開發,你就沒轍了。比如網路協議、介面、API等等相關知識。

那麼基礎知識要學習哪些呢?這里建議最基本的基礎知識至少還是要學習的。比如:計算機組成與原理、操作系統、計算機網路、資料庫原理、數據結構、編譯原理、軟體工程、軟體測試等等。不一定要專門花時間到外培訓,但至少自己花一些時間自學也是好的。萬丈高樓從地起,沒有基礎就不可能高。

從事軟體開發行業是一個不斷持續學習的過程,從事到老還要學到老。行業更新的知識太快,如果不學就跟不上。基礎知識不牢靠,今後工作學習中不能理解的就更多,會形成障礙的。

熱點內容
空間新演算法 發布:2025-04-05 10:33:21 瀏覽:704
蜀門和遠征哪個配置低 發布:2025-04-05 10:23:50 瀏覽:284
linux下jdk的安裝 發布:2025-04-05 10:12:20 瀏覽:67
單機江湖腳本 發布:2025-04-05 10:08:32 瀏覽:764
愛奇藝離線緩存怎麼傳藍牙 發布:2025-04-05 10:00:48 瀏覽:140
阿里雲伺服器內存超頻 發布:2025-04-05 10:00:48 瀏覽:575
如何登錄pubg國際服安卓手機 發布:2025-04-05 09:40:07 瀏覽:413
javafor表達式 發布:2025-04-05 09:22:22 瀏覽:869
可逆的加密演算法 發布:2025-04-05 09:22:22 瀏覽:496
我的世界怎麼讓別人進我的伺服器 發布:2025-04-05 09:11:59 瀏覽:802