天天看點

彙編:實作C語言的 ||與&&運算

彙編:實作C語言的 ||與&&運算
;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      
彙編:實作C語言的 ||與&amp;&amp;運算

<hr>

彙編:實作C語言的 ||與&amp;&amp;運算
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://sugarat.top

繼續閱讀