百度
360搜索
搜狗搜索

汇编语言实例100例,用汇编语言编写一个简单程序详细介绍

本文目录一览: 使用汇编语言怎样编写100个偶数相加的程序

我做的是从2开始的100个偶数的和,结果是2774H,即十进制的10100
没有编写输出语句,要用debug看结果。
dseg
segment
sum
dw
?
dseg
ends
cseg
segment
assume
cs:cseg,ds:dseg
begin:
mov
ax,dseg
mov
ds,ax
xor
ax,ax
mov
cx,1
again:
mov
bx,cx
shl
bl,1
add
ax,bx
inc
cx
cmp
cx,100
jbe
again
mov
sum,ax
mov
ah,4ch
int
21h
cseg
ends
end
begin
下面这个程序是计算100以内的偶数和,并以十六进制显示:
dseg
segment
sum
dw
?
tab
db
'0123456789ABCDEF'
dseg
ends
cseg
segment
assume
cs:cseg,ds:dseg
begin:
mov
ax,dseg
mov
ds,ax
xor
ax,ax
mov
cx,100
again:
add
ax,cx
sub
cx,2
jnz
again
mov
sum,ax
;以上是求和,并存到sum单元
mov
bx,offset
tab
mov
dh,4
mov
cl,4
next:
rol
ax,cl
push
ax
and
ax,0fh
xlat
mov
dl,al
mov
ah,2
int
21h
pop
ax
dec
dh
jnz
next
mov
dl,'H'
mov
ah,2
int
21h
;以上是以十六进制显示,思想是分离出四位,查表转换成ASCII码,并用2号功能显示,循环4次。最后输出后缀H
mov
ah,4ch
int
21h
cseg
ends
end
begin
我做的是从2开始的100个偶数的和,结果是2774H,即十进制的10100
没有编写输出语句,要用debug看结果。
dseg segment
sum dw ?
dseg ends
cseg segment
assume cs:cseg,ds:dseg
begin: mov ax,dseg
mov ds,ax
xor ax,ax
mov cx,1
again: mov bx,cx
shl bl,1
add ax,bx
inc cx
cmp cx,100
jbe again
mov sum,ax
mov ah,4ch
int 21h
cseg ends
end begin
下面这个程序是计算100以内的偶数和,并以十六进制显示:
dseg segment
sum dw ?
tab db '0123456789ABCDEF'
dseg ends
cseg segment
assume cs:cseg,ds:dseg
begin: mov ax,dseg
mov ds,ax
xor ax,ax
mov cx,100
again: add ax,cx
sub cx,2
jnz again
mov sum,ax
;以上是求和,并存到sum单元
mov bx,offset tab
mov dh,4
mov cl,4
next: rol ax,cl
push ax
and ax,0fh
xlat
mov dl,al
mov ah,2
int 21h
pop ax
dec dh
jnz next
mov dl,'H'
mov ah,2
int 21h
;以上是以十六进制显示,思想是分离出四位,查表转换成ASCII码,并用2号功能显示,循环4次。最后输出后缀H
mov ah,4ch
int 21h
cseg ends
end begin

汇编语言“自然数1到100的求和。并写出结果输出”

SSEG SEGMENT PARA STACK
DW 256 DUP(0)
SSEG ENDS
DSEG SEGMENT
SHOW DB 'SUM=','$'
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET SHOW
MOV AH,09
INT 21H
MOV CX,100
XOR AX,AX
NEXT1: ADD AX,CX
LOOP NEXT1
MOV BX,10
NEXT2: CMP AX,10
JB OK
XOR DX,DX
DIV BX
PUSH DX
INC CX
JMP NEXT2
OK: MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
CMP CX,0
JE FINISH
NEXT3: POP DX
ADD DL,30H
MOV AH,02H
INT 21H
LOOP NEXT3
FINISH: MOV AH,4CH
INT 21H
CSEG ENDS
END START
SSEG
SEGMENT
PARA
STACK
DW
256
DUP(0)
SSEG
ENDS
DSEG
SEGMENT
SHOW
DB
'SUM=','$'
DSEG
ENDS
CSEG
SEGMENT
ASSUME
CS:CSEG,DS:DSEG
START:
MOV
AX,DSEG
MOV
DS,AX
MOV
DX,OFFSET
SHOW
MOV
AH,09
INT
21H
MOV
CX,100
XOR
AX,AX
NEXT1:
ADD
AX,CX
LOOP
NEXT1
MOV
BX,10
NEXT2:
CMP
AX,10
JB
OK
XOR
DX,DX
DIV
BX
PUSH
DX
INC
CX
JMP
NEXT2
OK:
MOV
DL,AL
ADD
DL,30H
MOV
AH,02H
INT
21H
CMP
CX,0
JE
FINISH
NEXT3:
POP
DX
ADD
DL,30H
MOV
AH,02H
INT
21H
LOOP
NEXT3
FINISH:
MOV
AH,4CH
INT
21H
CSEG
ENDS
END
START
main( )
{ int i, sum=0;
for( i=1; i<=100; i+ + ) sum+ = i;
printf(“sum=%d\n”, sum);
}
dim a,i
j=0
for i=1 to 100
a=i+i
next
response.write a
<%
j=0
for i = 1 to 100
j=j+i
next
response.Write(j)
%>
最简单的做法
code segment
assume cs:code
start:
mov ax,0 ;ax清零
mov bx,1 ;bx将从1循环加到100
mov cx,100 ;cx作为循环次数的控制变量
next:
add ax,bx ;ax保存加的结果
inc bx ;bx加一
loop next
mov ah,4ch ;主程序结束 返回dos
int 21h
code ends
end start
不明白再发消息给我吧 ^_^

阅读更多 >>>  机器语言汇编语言高级语言,机器语言,汇编语言,高级语言各有什么特点

用汇编语言编写程序

data segment
credit dw 76,69,84,90,73,88,99,63,100,80
mes1 db '60-69:$'
mes2 db '70-79:$'
mes3 db '80-89:$'
mes4 db '90-99:$'
mes5 db '100:$'
s6 db ? ;60-69段人数计数器
s7 db ? ;70-79段人数计数器
s8 db ? ;80-89段人数计数器
s9 db ? ;90-99段人数计数器
s10 db ? ;100段人数计数器
data ends
code segment
assume cs:code,ds:data
main proc far
start:
mov ax,data
mov ds,ax
call count ;统计各分段人数的子程序
mov ah,4ch
int 21h
ret
main endp
count proc near
lea si,credit
mov cx,0ah;循环统计人数并分别存在相应单元中
m1:mov bx,[si]
add si,2
cmp bx,60
jl m6
cmp bx,69
jg m2
inc s6
jmp m6 ;60-69
m2:cmp bx,79
jg m3 ;70-79
inc s7
jmp m6
m3:cmp bx,89
jg m4 ;80-89
inc s8
jmp m6
m4:cmp bx,99
jg m5 ;90-99
inc s9
jmp m6
m5:cmp bx,100
jg m6 ;100
inc s10
m6:loop m1
;以下分别显示不同阶段的个数
mov dx,offset mes1
mov ah,09h
int 21h
mov dl,s6
add dl,30h
mov ah,02h
int 21h
call crlf
mov dx,offset mes2
mov ah,09h
int 21h
mov dl,s7
add dl,30h
mov ah,02h
int 21h
call crlf
mov dx,offset mes3
mov ah,09h
int 21h
mov dl,s8
add dl,30h
mov ah,02h
int 21h
call crlf
mov dx,offset mes4
mov ah,09h
int 21h
mov dl,s9
add dl,30h
mov ah,02h
int 21h
call crlf
mov dx,offset mes5
mov ah,09h
int 21h
mov dl,s10
add dl,30h
mov ah,02h
int 21h
exit:
ret
count endp
crlf proc near ;回车换行子程序
mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
crlf endp
code ends
end start
s6

汇编语言程序设计习题

1.写出下列程序段执行的结果,(AL)=? (DL)=?
并指出此程序段完成的是什么功能?
MOV CL, 4
MOV AL, 87d=57H
MOV DL, AL
AND AL, 0FH
OR AL, 30H
SHR DL, CL
OR DL, 30H
(AL)=37H (DL)=35H
程序段完成功能是:把AL中的16进制数高位送DL,移位取出低位,
再分别转化为对应的ASCII码.
2.假定DS=2100H,BX=0100H,SI=0002H;
[21100H]=12H,[21101H]=34H,[21102H]=56H,[21103H]=78H。
2100:100H=12H,34H,56H,78H
分析下列指令执行后寄存器的内容。
(1) MOV AX,[101H] ;ax=5634H
(2) MOV AX,[BX+2] ;ax=[0102H]=7856H
(3) MOV AL,[BX][SI+1] ;al=[0103H]=78H
(4) MOV AX,100H[SI] ;ax=[0102H]=7856H
3.识别下列指令正确与否,对错误指令,说明出错的原因。
(1) MOV DS,100 × ;数据段不允许用立即数赋值
(2) MOV [1000H],23H ×;立即数送入内存需指明是字还是字节
(3) MOV [1000H],[2000H] ×;源和目标不能同为内存数
(4) MOV DATA,1133H ? ;如用DATA定义过数据段,DATA就不能再用作变量名
(5) MOV 1020H,DX ×;目标不能是立即数
(6) MOV AX,[0100H+BX+BP] ×;寻址时,BX、BP只能用一个
(7) MOV CS,AX ×;CS不能直接赋值
(8) PUSH AL ×;堆栈不能压入字节,只能压入字(32位压入双字)
(9) PUSH WORD PTR[SI] √
(10) IN AL,378H ×;端口寻址大于0FFH,端口号源要放入DX
(11) OUT 80H,AX √
(12) MOV CX,[AX+SI]×;AX不能用于内存寻址

阅读更多 >>>  c语言刷题网站,考计算机二级C语言怎么准备?

简单汇编语言实例

给你一个汇编的32位的例子
; #########################################################################
.386
.model flat, stdcall
option casemap :none ; case sensitive
; #########################################################################
include f:\masm32\include\windows.inc
include f:\masm32\include\user32.inc
include f:\masm32\include\kernel32.inc
includelib f:\masm32\lib\user32.lib
includelib f:\masm32\lib\kernel32.lib
myabs PROTO :DWORD
; #########################################################################
.data
nValue1 dd 100H
nValue2 dd 8FFFFFFFH
.code
start:
invoke myabs,nValue1
invoke myabs,nValue2
invoke ExitProcess,NULL
; 求ABS的子函数
myabs proc src:DWORD
xor eax,eax
mov eax, DWORD PTR src
test eax, 080000000H
jz POSITIVE
xor eax, 0FFFFFFFFH
inc eax
POSITIVE:
ret
myabs endp
end start
(1)判断双字的高位字是不是1,如果不是,直接返回
(2)清除进位标志
(3)将低字求反,然后 +1
(4)将进位保存起来
(5)将高位字求反,加上刚才的进位
--------------
XXXX:
MOV AX, X + 1 ;取 X 的高位字
CMP AX, 32768
JB X_EXIT ;是正数就跳转
MOV AX, X ;取 X 的低位字
XOR AX, 0FFFFH ;取反
ADD AX, 1
PUSHF
MOV X, AX
MOV AX, X + 1 ;取X 的高位字
XOR AX, 0FFFFH ;取反
POPF
ADC AX, 0
MOV X + 1, AX
X_EXIT:
RET

求用ARM汇编语言编写从1加到100的程序

dseg segment
tab db '0123456789ABCDEF'
str db 4 dup(?),'$'
dseg ends
cseg segment
assume cs:cseg,ds:dseg
begin: mov ax,dseg
mov ds,ax
mov ax,1
mov bx,2
mov cx,99
next: add ax,bx
inc bx
loop next
call disp
mov ah,4ch
int 21h
disp proc
lea si,str
mov cl,4
mov di,4
abc: rol ax,cl
mov dx,ax
and ax,0fh
lea bx,tab
xlat
mov [si],al
inc si
mov ax,dx
dec di
jnz abc
lea dx,str
mov ah,9
int 21h
ret
disp endp
cseg ends
end begin
MOV R0,#0
MOV R1,#1
LOOP
ADD R0,R0,R1
ADD R1,R1,#1
CMP R1,#101
BNE LOOP
END
MOV R0,#0
MOV R1,#1
LOOP
ADD R0,R0,R1
ADD R1,R1,#1
CMP R1,#101
BNE LOOP
END

用汇编语言编写一个简单程序

1.计算U=(X+(Y*Z-100))/W
其中:X,Y,Z,W均为十六位有符号数。
程序如下:
DATA
SEGMENT
X
DW
10
;16位变量
Y
DW
20
Z
DW
30
W
DW
40
U
DW
?,?
DATA
ENDS
CODE
SEGMENT
ASSUME
CS:CODE,DS:DATA
START:
MOV
AX,DATA
MOV
DS,AX
MOV
AX,Y
IMUL
Z
;计算Y*Z,内容放在DX,AX中
MOV
CX,AX
MOV
BX,DX
SUB
CX,100
;计算Y*Z-100
SBB
BX,
0
MOV
AX,X
CWD
;将X符号扩展,形成DX:AX中的双字
ADD
AX,CX
;计算X+(Y*Z-100),内容放在DX,AX中
ADC
DX,BX
IDIV
W
;计算(X+(Y*Z-100))/W
MOV
U,AX
MOV
U+2,DX
MOV
AH,4CH
INT
21H
CODE
ENDS
END
START

阅读更多 >>>  关于汇编语言程序,汇编语言程序是什么

用汇编语言编写程序

(1)
MOV R0, #80H
MOV R1, #40H
MOV R2, #20
LOOP:
MOVX A, @R0
ADD A, #30H
MOV @R1, A
INC R0
INC R1
DJNZ R2, LOOP
RET
(2)
_DL1S:
MOV R5, #10 ;1T
_DELAY100MS:
MOV R6, #200 ;1T
DL250T:
MOV R7, #250 ;1T
D2:
DJNZ R7, D2 ;2T, 原地转移250遍, 共用500T
DJNZ R6, DL250T ;2T, 转移200遍
DJNZ R5, _DELAY100MS
RET ;2T

用汇编语言编写100以内所有偶数之和的程序 急用!!!!!!!!!!

假设CS:CODE
代码段
START:
MOV BX,0
MOV SI,2
MOV CX,50
LP:ADD BX,SI BX是的总和
地址SI,2; SI已经递增2,是SI是2,4,6,8 ...... 100
LOOP LP
MOV AX,4C00H
INT 21H
的代码最终
END START
ASSUME CS:CODE
CODE SEGMENT
START:
MOV BX,0
MOV SI,2
MOV CX,50
LP:ADD BX,SI ;BX就是总和
ADD SI,2 ;SI一直递增2,就是SI就是2,4,6,8.....100
LOOP LP
MOV AX,4C00H
INT 21H
CODE ENDS
END START

网站数据信息

"汇编语言实例100例,用汇编语言编写一个简单程序"浏览人数已经达到23次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:汇编语言实例100例,用汇编语言编写一个简单程序的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!