百度
360搜索
搜狗搜索

汇编语言编程100例,用汇编语言编写 Z=XY+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

用汇编语言编写程序

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

阅读更多 >>>  奇数与偶数的性质是什么

汇编语言编写程序

DATA SEGMENT ARRAY DB 100 DB ? DB 100 DUP(?) BUF1 DB 'Please input string : $' BUF2 DB 'The order is : $'DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATAMAIN PROC MOV AX, DATA MOV DS, AX MOV DX, OFFSET BUF1 MOV AH, 09H INT 21H MOV DX, OFFSET ARRAY MOV AH, 0AH INT 21H MOV CL, ARRAY + 1 MOV CH, 0 DEC CXL1: MOV DI, CX MOV BX, 0L2: MOV AL, [ARRAY + BX + 2] CMP AL, [ARRAY + BX + 3] JBE CONTINUE XCHG AL, [ARRAY + BX + 3] MOV [ARRAY + BX + 2], ALCONTINUE: INC BX LOOP L2 MOV CX, DI LOOP L1 MOV BL, ARRAY + 1 MOV BH, 0 MOV [ARRAY + BX + 2], '$' MOV AH, 2 MOV DL, 13 INT 21H MOV DL, 10 INT 21H CALL NEAR PTR CURS MOV DX, OFFSET BUF2 MOV AH, 09H INT 21H MOV DX, OFFSET ARRAY ADD DX, 2 MOV AH, 09H INT 21HEXIT: MOV AH, 4CH INT 21H MAIN ENDP CURS PROC NEAR MOV AL, 02H MOV BH, 00H MOV DH, 03H MOV DL, 00H INT 10H RETCURS ENDP CODE ENDS END MAIN
可以了。

用汇编语言编写1到100的和,和超过1000就停止

ATAS SEGMENT
sum dw 0 ;此处输入数据段代码
display db 10 dup(0)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,0 ;此处输入代码段代码
MOV SI,1
L1: ADD AX,SI
CMP AX,1000
JA L2
INC SI
JMP L1
L2: LEA DI,SUM
MOV [DI],AX
LEA SI,DISPLAY
MOV AX,[DI]
L3: DIV 10
CMP AL,0
JZ L4
ADD AH,30H
MOV [SI],AH
INC SI
MOV AH,00
JMP L3
L4:INC SI
MOV [SI],'$'
MOV AH,09H
MOV DX,OFFSET DISPLAY
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
以上程序,L3之前是没有错误的,结果存在sum中,后面的显示程序运行提示出错,主要是div 10指令不正确,目前原因还没有找到
area example5,code ,readonly
entry
code32
start
mov r0,#1000
mov r1,#1
mov r2,#0
loop
add r2,r2,r1
add r1,r1,#1
sub r0,r0,#1
cmp r2,#1000
bne end
cmp r0,#0
bne loop
end
code segment
assume cs:code
start: xor ax,ax ;ax清零
mov bx,1 ;bx置为1
next: add ax,bx ;将bx加到ax中
inc bx ;bx增1
cmp ax,1000
jbe next ;和小于等于1000则转到next继续加
;大于1000,结束。此时累加和在ax中。结果是040bh
mov ax,4c00h
int 21h
code ends
end start

阅读更多 >>>  intel汇编语言程序设计,32位汇编语言程序设计的编辑推荐

汇编语言程序设计

一.
1. ADD BX,AX 或 ADD BL,AL ;类型配对
2. MOV AX,0A999H
3. MOV AX,0F8H
4. MOV AX,1234H 或 MOV AL,12H
5. MOV AX,[BX]
6. MOV DS,AX ;DS不能直接存立即数
7. ADD [BX],10 ;对的诶
8. PUSH AX ;push不能直接push立即数
9. IN AL,DX
10. OUT 40H ,AL
11. MUL AL ;mul不能直接跟立即数
12. MOV [DI],AX ;mov不能两个都是内存
13. ADD DI,AX
14. MOV DS,AX ;CS不可以改
15. SUB 10[SI],AX ;si di 不可以同时出现
二.
SUB [BP], BX 寄存器间接寻址方式;30400H;
MOV [BX+DI], SI 基址变址寻址方式;10400H;
ADD ES:[SI], DI 寄存器相对寻址方式;20200H;
MOV 10[BX], DI 寄存器相对寻址方式;10100H;
MOV DS:[100H], BX 相对基址变址寻址方式;10100H
三.
3456H;5678H;1234H;5678H;
四.
1234H;2468H;0008H;1008H;0804H;0408H;0508H;0508H
五.
01H,31H,0FFH,00H,78H,56H,FFH,FFH,00H,24H,00H,0BH,00H,0BH,19H,09H,09H
(从左往右地址变大)
AX=3101H,BX=0023H
六.
汇编语言是一种符号语言,他和机器语言几乎一一对应,但在书写中却是用有字符串组成的助记符
。。。。。。。
(希望对你有帮助)
自学汇编的路过~ 楼主,太不厚道了吧,这种东西要自己做的吧。 第一题:我看了前面几个,是两个操作数的位数对不上,不能这样用的··· 其他的 懒得看了,自己慢慢做吧,给五百分也懒得帮你做了,哪有这样的啊! 楼主好懒。
八位和十六位寄存器不能同时运算
一.
1.ADD BX,AX 或 ADD BL,AL ;类型配对
2.MOV AX,0A999H
3.MOV AX,0F8H
4.MOV AX,1234H 或 MOV AL,12H
5.MOV AX,[BX]
6.MOV DS,AX ;DS不能直接存立即数
7.ADD [BX],10 ;对
8.PUSH AX ;push不能直接push立即数
9.IN AL,DX
10.OUT 40H ,AL
11.MUL AL ;mul不能直接跟立即数
12.MOV [DI],AX ;mov不能两个都是内存
13.ADD DI,AX
14.MOV DS,AX ;CS不可以改
15.SUB 10[SI],AX ;si di 不可以同时出现
二.
SUB [BP], BX 寄存器间接寻址方式;30400H;
MOV [BX+DI], SI 基址变址寻址方式;10400H;
ADD ES:[SI], DI 寄存器相对寻址方式;20200H;
MOV 10[BX], DI 寄存器相对寻址方式;10100H;
MOV DS:[100H], BX 相对基址变址寻址方式;10100H
三.
3456H;5678H;1234H;5678H;
四.
1234H;2468H;0008H;1008H;0804H;0408H;0508H;0508H
五.
01H,31H,0FFH,00H,78H,56H,FFH,FFH,00H,24H,00H,0BH,00H,0BH,19H,09H,09H
(从左往右地址变大)
AX=3101H,BX=0023H
六.
1.
汇编语言:(AssemblyLanguage)是面向机器的程序设计语言。
汇编:把汇编语言翻译成机器语言的过程称为汇编。
汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。
2.
3.
单独cmpsb就是逐一比较8个位;加上rep,循环比较,还是比较这8位啊
4.
是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的时间处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。
5.
宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:
1、在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用;
2、汇编程序对宏通过宏扩展来加入其定义体,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化;
3、宏引用时,参数是通过“实参”替换“形参”的方式来实现传递的,参数形式灵活多样,而子程序调用时,参数是通过寄存器、堆栈或约定存储单元进行传递的;
4、宏引用语句扩展后,目标程序中就不再有宏引用语句,运行时,不会有额外的时间开销,而子程序的调用在目标程序中仍存在,子程序的调用和返回均需要时间。
总之,当程序片段不长,速度是关键因素时,可采用宏来简化源程序,但当程序片段较长,存储空间是关键因素时,可采用子程序的方法来简化源程序和目标程序。
七.
…………

单片机汇编语言1加到100怎么编?

这个用查表话很简单的, ORG 0000H
SJMP MIAN
ORG 0030H
MIAN: MOV 30H,#00H
MOV 31H,#00H
MOV A,30H
L1: MOV DPTR,#TAB
MOV B,#100
DIV AB
MOVC A,@A+DPTR
SETB P2.0
MOV P1, #0FEH
CLR P2.0
SETB P2.1
MOV P1,A
CALL DE
CLR P2.1
MOV A,B
MOV B,#10
DIV AB
MOVC A,@A+DPTR
SETB P2.0
MOV P1, #0FDH
CLR P2.0
SETB P2.1
MOV P1,A
CALL DE
CLR P2.1
MOV A,B
MOVC A,@A+DPTR
SETB P2.0
MOV P1, #0FBH
CLR P2.0
SETB P2.1
MOV P1,A
CALL DE
CLR P2.1
MOV A,30H
MOV R0,31H
INC 31H
CJNE R0,#66,L1
MOV 31H,#00H
INC 30H
MOV A,30H
CJNE A,#256,L1
AJMP MIAN
DE:
MOV R5,#1
L4: MOV R6,#10
L3: MOV R7,#248
DJNZ R7,$
DJNZ R6,L3
DJNZ R5,L4
RET
TAB: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH
END

阅读更多 >>>  汇编语言程序设计结构,Intel汇编语言程序设计(第五版)目录

这是0到255的程序,考你一下,你改一个数就可以实现0到100了,呵呵,我是用开发板写的,用了锁存器的
ORG 0000H
MOV A,#1
MOV R0,A
CJNE R0,#100,NEXT
SJMP $
NEXT: INC A
END
org 0
mov r0,#100 ;共100个数
mov a,#0 ;累加结果先清0
mov r1,#1 ;第1个数为1
loop:
add a,r1 ;把数累加起来
inc r1 ;下一个数
djnz r0,loop;共100个数,未完转 LOOP循环
sjmp $ ;完成
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

汇编语言编写程序

Data segment ;定义数据段
ADR DB 100 dup(?) ;假设100个数
NUM EQU $-ADR ;NUM是数据个数
DA1 DB 0 ;DA1用来存放正数的个数,初值为0
DA2 DB 0 ;DA2用来存放负数的个数,初值为0
DA3 DB 0 ;DA3用来存放0的个数,初值为0
DATA ENDS
code segment ;定义代码段
assume cs:code,ds:data
START: mov ax,data ;数据段地址装入
mov ds,ax
LEA SI,ADR
MOV CX,NUM
INPUT: CALL MYINPUT ;子程序,输入与数据->AL
mov [si],al
LOOP INPUT
LEA SI,ADR
MOV CX,NUM
xor al,al ;AL清零
DON1: MOV AL,[SI]
CMP AL,0
JGE DON2
INC DA2
JMP END0
DON2: CMP AL,0
JZ DON3
INC DA1
JMP END0
DON3: inc da3
END0: INC SI
dec cx
jnz don1
mov al,[da1]
call disp ;显示AL的子程序
mov al,[da2]
call disp ;显示AL的子程序
mov al,[da3]
call disp ;显示AL的子程序
MOV AH,4CH
INT 21H
myinput proc near
;自己写一个
ret
myinput endp
disp proc near
;自己写一个
ret
disp endp
code ends
END START

用汇编语言编写 Z=XY+100

DATA SEGMENT
X DW 10 ;16位变量
Y DW 20
Z DW ?,?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,X
IMUL Y ;计算X*Y,内容放在DX,AX中
MOV CX,AX
MOV BX,DX
ADD CX,100 ;计算X*Y+100
ADC BX, 0
MOV Z,AX
MOV Z+2,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
提供一下思路吧。
首先把X放到AX寄存器里,然后用mul y,这样AX里面就存放了x*y,然后用add ax,100
这样的就完成了整个计算过程。
程序还是自己写比较好,锻炼一下动手能力

网站数据信息

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