第一次写汇编的成果及感受

这几天第一次写了汇编的程序,说句实在话,汇编真的比什么C啊,C++容易很多,因为它就是最底层的东西,所有的东西都清清楚地摆在你面前,不像一些高级语言,别人给你包装好了,自己用的时候却老出现不明不白的错误。照编程惯例,哥的第一个程序也是HELLO WORLD,居然一次通过了。

但是汇编写程序真的很烦啊,这也就是高级语言存在的原因。有同学老是问我那我们学汇编有什么用呢?其实我也在刚学,我也没打算将来靠汇编来写程序。我突然自己想出一句话:如果你只会用高级语言写程序,你是个代码工人,至多是个软件工程师;但是如果你还会汇编,那就软硬能吃了。(信口胡绉,别拍砖)对于我们电子类专业的学生来说,学会汇编对理解微机的工作是很有帮助的。而且学会底层的语言也会加深你对上层语言的理解和运用,就像学会C在用JAVA的时候就会知道,程序是要回收空间的,虽然在JAVA里不用写相应语句,但是程序还是会执行这些东西的,如果不考虑这一点,有时是会影响你程序的正常运行的。这是我目前的收获。

HELLO WORLD:

DATA    SEGMENT
        CR EQU 0DH
        LF EQU 0AH
        MES DB 'HELLO WORLD!',CR,LF,'$'
DATA    ENDS
CODE    SEGMENT
MAIN    PROC    FAR
        ASSUME CS:CODE,DS:DATA
START:  MOV AX,DATA
        MOV DS,AX
        MOV DX,OFFSET MES
        MOV AH,9
        INT 21H
        MOV AX,4C00H
        INT 21H
MAIN    ENDP
CODE    ENDS
        END START


ASIC码转二进制:

DATA    SEGMENT
        D1 DB 6,?,10 DUP(?) ;longest:6
        ZE EQU '0'
        TEN EQU 10
DATA    ENDS

STACK   SEGMENT STACK 'STACK'
        STT DB 100 DUP(?)
STACK   ENDS

CODE    SEGMENT
MAIN    PROC    FAR
        ASSUME CS:CODE,DS:DATA,SS:STACK
START:  MOV AX,STACK
        MOV SS,AX
        PUSH DS
        MOV AX,0
        PUSH AX ;return DOS
        MOV AX,DATA
        MOV DS,AX  ;Init end

        MOV DX,OFFSET D1
        MOV AH,0AH
        INT 21H    ;get input

        MOV CL,D1[1] ;get strlen
        MOV BX,2
        MOV AX,0
R1:     MOV DX,10
        MUL DX
        ADD AL,D1[BX]
        ADC AH,0
        SUB AX,ZE
        INC BX
        LOOP R1

        MOV CX,16
CHG:    RCL AX,1
        PUSH AX
        JNC C1
        MOV DL,'1'
        MOV AH,2
        INT 21H
        JMP C2
C1:     MOV DL,'0'
        MOV AH,2
        INT 21H
C2:     POP AX
        LOOP CHG
        RET
MAIN    ENDP
CODE    ENDS
        END START


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值