代码如下:
; 显示三角形data SEGMENT
ORG 100H
STAR DB ' ', '$'
SPACE DB ' ', '$' ;空格
LINE DB 0DH, 0AH, '$' ;换行
data ENDS
stack SEGMENT PARA STACK
DW 256 DUP()
stack ENDS
code SEGMENT
ASSUME CS: code, DS: data
BEGIN:
MOV AX, data
MOV DS, AX
MOV CX, 15
LOOP1:
PUSH CX
; 计算第 i 行前导空格数
DEC CX
JZ LABEL1
LOOP2:
; 前导空格
MOV DX, OFFSET SPACE
MOV AH, 09H
INT 21H
LOOP LOOP2
LABEL1:
POP AX
PUSH AX
; 计算第 i 行显示字符数
MOV CX, 15
SUB CX, AX
INC CX
LOOP3:
; 显示 号
MOV DX, OFFSET STAR
MOV AH, 09H
INT 21H
LOOP LOOP3
; 换行
MOV DX, OFFSET LINE
MOV AH, 09H
INT 21H
POP CX
LOOP LOOP1
EXIT:
MOV AH, 4CH
INT 21H
code ENDS
END BEGIN
运行结果:
1
model small
386
data
code
just_for_test proc far
mov ax,@data
mov ds,ax
mov ax,1234h
push ax
shr ax,4
mov bl,al
and bl,0fh
shr ax,4
mov cl,al
and cl,0fh
shr ax,4
mov dl,al
and dl,0fh
pop ax
and al,0fh
mov ah,4ch
int 21h
just_for_test endp
end
2
data segment
Ar dw 0,1,2,3,4,5,6,7,8,9
Br dw 2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
Cr dw 10 dup ()
data ends
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
;-------------------------------
mov si, offset Ar
mov di, offset Cr
mov cx, 10
@C001:
mov ax, [si]
push cx
;-------------------------------
mov bx, offset Br
mov cx, 15
@C002:
mov dx, [bx]
cmp ax, dx
jnz @C003
test ax, 1
jnz @C003
mov [di], ax ; 找到一个在A、B中的偶数
inc di
inc di
@C003:
inc bx
inc bx
loop @C002
;-------------------------------
pop cx
inc si
inc si
loop @C001
;-------------------------------
mov ax,4c00h
int 21h
code ends
end start
自己调去!
一.
1ADD BX,AX 或 ADD BL,AL ;类型配对
2MOV AX,0A999H
3MOV AX,0F8H
4MOV AX,1234H 或 MOV AL,12H
5MOV AX,[BX]
6MOV DS,AX ;DS不能直接存立即数
7ADD [BX],10 ;对
8PUSH AX ;push不能直接push立即数
9IN AL,DX
10OUT 40H ,AL
11MUL AL ;mul不能直接跟立即数
12MOV [DI],AX ;mov不能两个都是内存
13ADD DI,AX
14MOV DS,AX ;CS不可以改
15SUB 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、宏引用语句扩展后,目标程序中就不再有宏引用语句,运行时,不会有额外的时间开销,而子程序的调用在目标程序中仍存在,子程序的调用和返回均需要时间。
总之,当程序片段不长,速度是关键因素时,可采用宏来简化源程序,但当程序片段较长,存储空间是关键因素时,可采用子程序的方法来简化源程序和目标程序。
七
…………
ASSUME CS:CC, DS:QW
;------------------------------
QW SEGMENT
BUF DB 36, 78, -1, 0, -54, 33, 53, -40, 78, 100
LLL EQU $ - BUF
QW ENDS
;------------------------------
CC SEGMENT
START:
MOV AX, QW
MOV DS, AX
;-------------------------
MOV CX, LLL
DEC CX
LP1:
MOV DX, CX
LEA BX, BUF ;起始地址
LP2:
MOV AL, [BX]
CMP AL, [BX + 1]
JL NEXT
XCHG AL, [BX + 1]
MOV [BX], AL
NEXT:
INC BX
DEC DX
CMP DX, 0
JNZ LP2
LOOP LP1
;-------------------------
EXIT:
MOV AH, 4CH
INT 21H
CC ENDS
END START
;------------------------------
data segment dword 'data'
arr db 100 dup()
data ends
stack segment para stack
dw 200 dup()
top dw $
stack ends
code segment word 'code'
assume cs:code,ss:stack,ds:data,es:data
org 100h
start:mov ax,seg stack
mov ss,ax
mov sp,top
mov ax,seg data
mov ds,ax
mov es,ax
mov cx,100
mov di,0
mov al,64h
cld
rep stosb
mov ah,4ch
int 21h
code ends
end start
以上就是关于汇编语言程序全部的内容,包括:汇编语言程序、汇编语言 编写程序、汇编语言程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)