1. 程式人生 > >彙編:實現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

 

<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