⑴ 如何用汇编语言写个小程序“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