汇编:实现C语言的 ||与&&运算

本文详细介绍了如何将简单的C程序转换为汇编语言,通过具体实例演示了条件判断和位运算的汇编实现,包括小于、大于和等于的逻辑判断,并展示了如何将寄存器中的数值转化为ASCII码存储到字符串中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

;C程序转汇编(或运算链接)
DATAS SEGMENT
a Dw 5
b dw 6
cc dw 7
d dw 8
m dw 2
n dw 2
string db 6 dup(?)
DATAS ends
CODES SEGMENT
    ASSUME CS:CODES, DS:DATAS
    START:
        mov AX,DATAS
        mov DS,AX   ;把需要比较的两个数字放入两个寄存器中
        
        mov ax,a
        mov bx,b
        cmp ax,bx
        jb Rm       ;当a<B时跳转到rm
        mov m,0     ;当a>b时为假所以m赋值为0
                    ;上述内容给等价于m=a<>>b
        mov ax,cc
        mov bx,d
        cmp ax,cc
        ja  Rn
        mov n,0
                     ;上述内容给等价于n=c>d
        jmp exit

    Rm:
        mov m,1
        jmp exit
    Rn:
        mov n,1
        jmp exit
    exit:
        mov si,offset string
        mov AX,m
        and AL,0FH
        add al,30H
        mov [si],al
                    ;把m转化为ASCII码并存入string中
        xor cx,cx
        mov cl,3
                    ;上述两句设置循环次数
    lp:
        inc si
        mov byte ptr [si],20H    ;20H代表空格
        loop lp
                    ;利用循环添加3个空格 代替\t
        inc si
        mov AX,n
        and AL,0FH
        add al,30H
        mov [si],al
                    ;把n转化为ASCII码并存入string中
        mov byte ptr [si+1],'$'
                    ;为字符串string加上结束符
        lea dx,string
        mov ah,09h
        int 21H
        mov ah,4ch
        int 21H
CODES ends
    end START

 

<hr>

 

 

 1 ;C程序转汇编(与运算链接)
 2 DATAS SEGMENT
 3 a Dw 5
 4 b dw 6
 5 cc dw 7
 6 d dw 8
 7 m dw 2
 8 n dw 2
 9 string db 6 dup(?)
10 DATAS ends
11 CODES SEGMENT
12     ASSUME CS:CODES, DS:DATAS
13     START:
14         mov AX,DATAS
15         mov DS,AX   ;把需要比较的两个数字放入两个寄存器中
16         
17         mov ax,a
18         mov bx,b
19         cmp ax,bx
20         jbe Rm     ;当a<=B时跳转到rm
21         mov m,1     ;当a>b时为真所以m赋值为1
22                     ;上述内容给等价于m=a>b
23         mov ax,cc
24         mov bx,d
25         cmp ax,cc
26         jbe Rn
27         mov n,1
28                      ;上述内容给等价于n=c>d
29         jmp exit
30 
31     Rm:
32         mov m,0
33         jmp exit
34     Rn:
35         mov n,0
36         jmp exit
37     exit:
38         mov si,offset string
39         mov AX,m
40         and AL,0FH
41         add al,30H
42         mov [si],al
43                     ;把m转化为ASCII码并存入string中
44         xor cx,cx
45         mov cl,3
46                     ;上述两句设置循环次数
47     lp:
48         inc si
49         mov byte ptr [si],20H    ;20H代表空格
50         loop lp
51                     ;利用循环添加3个空格 代替\t
52         inc si
53         mov AX,n
54         and AL,0FH
55         add al,30H
56         mov [si],al
57                     ;把n转化为ASCII码并存入string中
58         mov byte ptr [si+1],'$'
59                     ;为字符串string加上结束符
60         lea dx,string
61         mov ah,09h
62         int 21H
63         mov ah,4ch
64         int 21H
65 CODES ends
66     end START

 

转载于:https://www.cnblogs.com/roseAT/p/10246072.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值