⑴ 如何用匯編語言寫個小程序「HELLO WORD!」

;堆棧段
;-----------------------------------------
stack segment stack
db 100(?)
stack ends
;數據段
;-----------------------------------------
data segment
szhello db 'hello,word',0dh,0ah,'$'
;-----------------------------------------
data ends
;-----------------------------------------
;代碼
;-----------------------------------------
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax

mov ah,9
mov dx,offset szhello
int 21h

mov ah,4ch
int 21h
code ends
end start
這個就行了 編譯一下就行了。解釋就不打了應該看的明白吧。和下面的差不多。

⑵ 請教:用匯編語言寫一個小程序

DATAS SEGMENT
str1 db 255 p(?)
DATAS ENDS

STACKS SEGMENT
db 200 p(?)
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,OFFSET STR1
MOV CX,100H ;循環次數
AGAIN:
MOV AH,01H
INT 21H
CMP AL,24H ;回車的時候結束
JZ OUT1
MOV [SI],AL ;保持輸入的字元串
INC SI
LOOP AGAIN
OUT1:
MOV [SI],AL ;把回車作為結束符號
MOV SI,OFFSET STR1
MOV CX,100H
L1:
MOV BL,[SI]
CMP BL,24H ;檢查是否到結束了
JZ OUT2 ;結束就退出
CALL XCHGSTR
INC SI
LOOP L1
OUT2:
MOV CX,100H
MOV SI,OFFSET STR1
L2: MOV AL,[SI]
CMP AL,24H
JZ OUT3
MOV DL,AL
MOV AH,02H
INT 21H
INC SI
LOOP L2
OUT3:
MOV AH,4CH
INT 21H
XCHGSTR:
MOV AL,[SI] ;取出數據
OR AL,20H ;讓其第5位為1
MOV [SI],AL ;將其保存
RET
CODES ENDS
END START
這個程序是將不小於256個字母轉換的程序,如果你只要10個,你可以在輸入10個之後用$來結束就可以了

⑶ 用匯編語言設計一個小程序

html">CODESEGMENT
ASSUMECS:CODE

BUFDB12H,34H,07H,78H,65H,41H,99H,87H,66H,52H
NEQU$-BUF

START:PUSHCS
POPDS
PUSHCS
POPES
LEASI,BUF
MOVCX,N
CALLSORT
LEASI,BUF
MOVCX,N
CALLDSPBCD
MOVAH,4CH
INT21H
;===============================
DSPBCD:
PUSHAX
PUSHCX
PUSHDX
PUSHSI
CLD
@BCD1:
LODSB
RORAL,4
PUSHAX
MOVDL,AL
ANDDL,0FH
ORDL,30H
MOVAH,2
INT21H
POPAX
RORAL,4
MOVDL,AL
ANDDL,0FH
ORDL,30H
MOVAH,2
INT21H
MOVDL,'H'
INT21H
MOVDL,32
INT21H
MOVDL,32
INT21H
LOOP@BCD1
POPSI
POPDX
POPCX
POPAX
RET

;===============================
;單個字元串(或者位元組數組)內部的排序(冒泡排序)
SORTPROCNEAR
;串長度置入cx,串首地址置入si
PUSHAX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
PUSHF
PUSHCX
POPDX
DECDX
@SORTL1:
MOVCX,DX
MOVDI,SI
@SORTL2:
MOVAL,[DI+1]
CMPAL,[DI]
JA@SORTNEXT;無符號升序
XCHGAL,[DI]
MOV[DI+1],AL
@SORTNEXT:
INCDI
LOOP@SORTL2
DECDX
JNZ@SORTL1
POPF
POPDI
POPSI
POPDX
POPCX
POPAX
RET
SORTENDP
;===============================================================
CODEENDS
ENDSTART

⑷ 匯編語言寫的小程序

我已經發給你了 收到記得給分啊

⑸ 80X86匯編的一個小程序設計

; 本程序通過編譯,運行正確
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段)
; 用法: Output Str_Addr
; 用法舉例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:輸出一個字元
; 入口:dl=要顯示的字元
Enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Enter_Chr endp
; -----------------------------------------
; 功能:輸出回車換行
Enter_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Enter_CTLF endp
; -----------------------------------------
; 功能:將AL中的低4位二進制數轉換成十六進制顯示的ASCII碼
; 入口:AL
; 出口:AL=轉換後的ASCII碼
AL_ASCII Proc Near
cmp al,10 ;AL<10?
jb @@To_ASCII ;AL<10,按數字處理
add al,7 ;AL>=10,按大寫字母處理
@@To_ASCII: add al,'0' ;轉換成相應的數字或大寫字母
ret
AL_ASCII EndP
; -----------------------------------------
; 功能:將AL中的位元組數轉換成十六進制顯示的ASCII碼
; 入口:AL
; 出口:AX=轉換後的ASCII碼
Byte_ASCII Proc Near
push cx
mov cx,4
xor ah,ah ;將AH置0
shl ax,cl ;將AX左移4位
shr al,cl ;將AL右移4位
xchg ah,al
call AL_ASCII ;調用子程序,將AL中的值轉換成相應的ASCII碼
xchg ah,al
call AL_ASCII
xchg ah,al
pop cx
ret
Byte_ASCII EndP
; -----------------------------------------
; 功能:將AL中的位元組數轉換成十六進制顯示的ASCII碼,並在當前游標位置顯示
; 入口:AL
; 出口:AX=轉換後的ASCII碼
ByteD_ASCII Proc Near
push dx
push ax
call Byte_ASCII ;將AL中的位元組數轉換成十六進制顯示的ASCII碼
mov dl,al
call Enter_Chr ;顯示一個字元
mov dl,ah
call Enter_Chr ;顯示一個字元
mov dl,'H'
call Enter_Chr ;顯示一個字元
pop ax
pop dx
ret
ByteD_ASCII EndP
; -----------------------------------------
Prompt_Str1 db 'Please input a charactor: $'
Prompt_Str2 db 13,10,'The ASCII code of ('
Charactor db ?,') is $'
Start: push cs
pop ds
push cs
pop es ;使數據段、附加段與代碼段同段
Input_Chr: Output Prompt_Str1 ;提示輸入一個字元
mov ah,1
int 21h
cmp al,13 ;回車?
jz Exit_Proc ;結束程序
mov Charactor,al
Output Prompt_Str2 ;提示顯示字元的ASCII碼
mov al,Charactor
call ByteD_ASCII ;將AL中的位元組數轉換成十六進制顯示的ASCII碼,並在當前游標位置顯示
call Enter_CTLF ;輸出一個回車、換行
call Enter_CTLF ;輸出一個回車、換行
jmp Input_Chr
Exit_Proc: mov ah,4ch ;結束程序
int 21h
String db ?
Code ENDS
END Start ;編譯到此結束

⑹ 求幾個匯編小程序的源代碼 要完整的

簡單的取系統時間小程序code segment
assume cs:code
start:
mov ah,2ch;2ch號功能調用,取系統時間:ch,cl,dh中分別存放時分秒
int 21h
calldisptime;調用disptime子程序顯示時間
exit:
mov ax,4c00h;結束程序,返回DOS
int 21h
disptime proc
mov al,ch ;小時的值賦給al
cbw ;al擴展成ax,用做除法的被除數
call bindec
mov dl,':';顯示":"
mov ah,02h
int 21h
mov al,cl ;分
cbw
call bindec
mov dl,':';顯示":"
mov ah,02h
int 21h
mov al,dh;秒
cbw
call bindec
ret
disptime endp
bindec proc
pushax ;保存寄存器的值(一定要的)
pushcx
pushdx
mov dx,0;被除數高16位置0
mov cx,10d;除數為10d
div cx
mov bx,dx ;先保存余數
mov dl,al ;顯示商(即十進制二位數的十位)
add dl,30h;轉換成Ascii碼
mov ah,02h;2號功能調用,顯示字元(十位)
int 21h
mov dx,bx ;恢復余數的值(十進制二位數的個位)
add dl,30h;轉換成ASCII碼
mov ah,02h;2號功能調用,顯示字元(個位)
int 21h
pop dx;恢復寄存器的值
pop cx
pop ax
ret;子程序返回
bindec endp
code ends
end start

⑺ 匯編語言小程序

匯編不會能用C語言或python

⑻ 用匯編語言編寫一個小小程序

; 本程序通過編譯,運行正確
Code Segment
Assume CS:Code,DS:Code
CR equ 000DH
LF equ 000AH
KBBack equ 0008H
; -----------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段); 用法: Output Str_Addr
; 用法舉例:Output PromptStrOutput MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:取游標位置
; 入口:無
; 出口:DH=行號,DL=列號
GetCursor Proc Near
PUSH AX
PUSH BX
PUSH CX
XOR BX,BX
MOV AH,3
INT 10H
MOV Cursor_Row,DH
MOV Cursor_Col,DL
POP CX
POP BX
POP AX
RET
Cursor_Row DB ?
Cursor_Col DB ?
GetCursor EndP
; -----------------------------------------
; 功能:置游標位置
; 入口:Cursor_Row=行坐標; Cursor_Col: 列坐標)
SetCursor Proc Near
PUSH CX
PUSH BX
PUSH AX
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
RET
SetCursor EndP
; -----------------------------------------
; 功能:輸出回車換行
enter_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
enter_CTLF endp
; -----------------------------------------
; 功能:輸出一個字元
; 入口:dl=要顯示的字元
enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
enter_Chr endp
; -----------------------------------------
; 功能:鍵盤輸入一個N位的十進制數字,
; 用邏輯和移位指令將其轉換成二進制數並保存在指定的內存單元。
; 入口:N=數字位數;di=保存輸入的數字首地址
; 出口:轉換後的二進制數保存在di所指的單元
Input_Digit Proc Near
push dx
push cx
push bx
push di
lea di,@@Save_Tmp
push di
cld
mov cx,N
push cx
@@Input: call GetCursor ;取游標位置
mov ah,1 ;從鍵盤接受一個字元
int 21h
cmp al,CR ;若鍵入的是回車,已經鍵入的數字不足N位
jz @@ASC_Dec ;轉去處理已經鍵入的數字
cmp al,KBBack
jz @@KB_Back ;若是回空鍵,重新輸入

cmp al,'0'
jb @@KBBack ;若低於數字'0',重新輸入
cmp al,'9'
ja @@KBBack ;若低於數字'9',重新輸入
jmp @@Save_Dig
@@KB_Back: dec Cursor_Col
inc cx
dec di
@@KBBack: call SetCursor ;置游標位置
jmp @@Input
@@Save_Dig: and al,0fh ;轉換成二進制數

mov al,01h

stosb ;保存
loop @@Input ;接受下一個數字
@@ASC_Dec: mov ax,cx
pop cx
pop si
sub cx,ax ;實際輸入的數字位數
xor bp,bp
xor dx,dx
xor ax,ax
jcxz @@Save_Ret ;若直接回車,沒有輸入任何數字,按輸入'0'處理
dec cx ;實際輸入的數字位數減1,准備把輸入的這一串數字轉換成二進制數
jcxz @@One_Digit ;若輸入的數字只有一位,轉去直接保存這個二進制數
mov bx,10
@@Mul_Ten: lodsb
cbw
add ax,bp
mul bx
mov bp,ax
loop @@Mul_Ten
@@One_Digit:lodsb
cbw
add ax,bp
@@Save_Ret: pop di
stosw
pop bx
pop cx
pop dx
ret
@@Save_Tmp db 16 p(?)
Input_Digit EndP
; -----------------------------------------
; 功能:把AX中的二進制有、無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
; 入口:AX=二進制數
; 出口:在當前游標位置顯示轉換後的ASCII碼數字
Dec_ASCII Proc Near
push dx
push bx
push di
.IF Signed == 'y'
mov @@Carry_Yes,'+'
test ax,8000h
jz $+9
mov @@Carry_Yes,'-'
neg ax
.Endif
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
.IF Signed == 'y'
cmp @@Carry_Yes,'-'
jnz $+6
mov byte ptr [di],'-'
dec di
.Endif
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 p(?)
@@Carry_Yes db '+'
Dec_ASCII EndP
; -----------------------------------------
N equ 3 ;輸入的十進制整數位數
Signed db 'y' ;是否有符號數。'y'=有符號數,'n'=無符號數
Number1 dw ?
Number2 dw ?
Number3 dw ?
Period_Aft db 3 ;保留小數位數
prompt_title db 's=(a*b+c)/a',0ah,0dh,'$'
prompt_A db 'Please Input A: $'
prompt_B db 'Please Input B: $'
prompt_C db 'Please Input C: $'Start: push cs
pop ds
push cs
pop es ;使數據段、附加段與代碼段同段
; -----------------------------------------
; 輸入兩個十進制數
Output prompt_title;提示題目
Output prompt_A ;提示輸入第一個數
lea di,Number1 ;變數Number1的地址
call Input_Digit ;從鍵盤接受一個N位數字
call enter_CTLF ;輸出一個回車、換行
Output prompt_B ;提示輸入第二個數
lea di,Number2 ;變數Number2的地址
call Input_Digit ;從鍵盤接受一個N位數字
call enter_CTLF ;輸出一個回車、換行
Output prompt_C ;提示輸入第三個數
lea di,Number3 ;變數Number3的地址
call Input_Digit ;從鍵盤接受一個N位數字
call enter_CTLF ;輸出一個回車、換行
call enter_CTLF ;輸出一個回車、換行
; -----------------------------------------
; 運算

mov dl,'s'
call enter_Chr ;顯示一個s

mov dl,'='
call enter_Chr ;顯示一個等號

mov ax,Number1
imul Number2 ;Number1*Number2→AX
add ax,Number3 ;(Number1*Number2+Number3)→AX
idiv Number1 ;(Number1*Number2+Number3)/Number1→AX

call Dec_ASCII ;顯示和
call enter_CTLF ;輸出一個回車、換行
; -----------------------------------------Exit_Proc: mov ah,4ch ;結束程序
int 21h
Code ENDS
END Start ;編譯到此結束

⑼ 哪位高手幫幫忙,用匯編語言寫個小程序

如果沒人回答,先別刪,我雙休日幫你答,這幾天要考試……

------------------------------------------------------

真是抱歉,我還是比較忙……下星期整個星期考試……
先幫你寫了加法的,我有時間才把剩下的都寫上吧。驗證過的。其實減法、乘除法道理都相同的。
因為想要寫得比較好看,所以比較長,輸入輸出都寫了。

DATA SEGMENT
ANS DB 10,13,'Answer is:$'
MSG1 DB 10,13,'Input number 1:$'
MSG2 DB 10,13,'Input number 2:$'
NUM1 DW ?
NUM2 DW ? ;我用字而不是位元組,比較好處理
DATA ENDS

STACK SEGMENT
DB 32 DUP(?)
STACK ENDS

CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE,ES:DATA

MAIN: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
INTDEF: STI ;設置所有的中斷向量
PUSH DS
MOV AX,SEG ADDPROC
MOV DS,AX
MOV AX,2560H
MOV DX,OFFSET ADDPROC
INT 21H
MOV AX,2561H
MOV DX,OFFSET SUBPROC
INT 21H
MOV AX,2562H
MOV DX,OFFSET MULPROC
INT 21H
MOV AX,2563H
MOV DX,OFFSET DIVPROC
INT 21H
POP DS
START: CALL INPUT
INT 60H
;INT 61H
;INT 62H
;INT 63H
MOV AH,07H
INT 21H
MOV AH,07H
MOV AH,4CH
INT 21H

INPUT: MOV AH,09H ;輸入部分,原理很簡單相信你懂。
MOV DX,OFFSET MSG1
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
MOV AH,0
MOV [NUM1],AX
MOV AH,09H
MOV DX,OFFSET MSG2
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
MOV AH,0
MOV [NUM2],AX
RET

ADDPROC: CLI
PUSH AX
PUSH DX
PUSH CX
MOV AH,09H
MOV DX,OFFSET ANS
INT 21H
MOV AX,[NUM1]
ADD AX,[NUM2]
AAA ;調整之後AH、AL分別是高低位
MOV DX,AX
PUSH DX
OR DH,30H
MOV DL,DH
MOV AH,02H
INT 21H
POP DX
OR DL,30H
MOV AH,02H
INT 21H
POP CX
POP DX
POP AX
STI
IRET
SUBPROC:
IRET
MULPROC:
IRET
DIVPROC:
IRET

CODE ENDS
END MAIN