汇编语言程序

汇编语言程序,第1张

代码如下:

; 显示三角形

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

以上就是关于汇编语言程序全部的内容,包括:汇编语言程序、汇编语言 编写程序、汇编语言程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9827816.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存