Giúp Dịch Code C Sang Asm - Dien Tu Viet Nam
Có thể bạn quan tâm
- Đăng ký hoặc đăng nhập
- Logging in... Ghi Nhớ? Ðăng Nhập Forgot password or user name? hoặc Đăng ký
- Log in with Facebook
- Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
- Bài viết
- Hoạt động gần đây
- Tìm kiếm
- Trang of 2
- Lọc
- Giờ All Time hôm nay Last Week Last Month
- Show All Discussions only Photos only Videos only Links only Polls only Events only
-
minhthanh29 Thành viên tích cực
- Tham gia: Jul 2011
- Bài viết: 201
- Share
-
Tweet
06-06-2012, 14:34 Bạn nào biết dịch từ C sang asm thì giúp mình nha, mình đang cần để làm đồ án. Thansk Đây là code C: #include<reg52.h> sbit DATA1 = P2^7; sbit SCK1 = P2^6; sbit LACH1 = P2^5; sbit set=P3^5; sbit up=P3^6; sbit down=P3^7; sbit sdi1 = P3^1; sbit str1 = P3^2; sbit clk1 = P3^0; unsigned char m1[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; unsigned char m2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; unsigned char m3[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; unsigned char hour, minute, second,c; unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0}; unsigned char kt=0,a=0,i,k,x=0; bit set0=1,set1=1,up1=1,up0=1,down0=1,down1=1; sbit SCL = P1^0; sbit SDA = P1^1; void delay(){ unsigned char i; for (i = 0; i < 4; i++){}; } //----------------------------------------- void SCL_high(){ SCL = 1; delay(); } //------------------------------------------ void SCL_low(){ SCL = 0; delay(); } //------------------------------------------- void I2C_Start(){ SDA = 1; SCL = 1; SDA = 0; delay(); SCL = 0; SDA = 1; } //-------------------------------------------- void I2C_Stop(){ SDA = 0; SCL_high(); SDA = 1; } //---------------------------------------------- bit I2C_Write(unsigned char dat){ unsigned char i; bit outbit; for (i = 1; i <= 8; i++){ outbit=dat&0x80; SDA = outbit; dat = dat << 1; SCL_high(); SCL_low(); } SDA = 1; SCL_high(); outbit = SDA; SCL_low(); return(outbit); } //---------------------------------------------------- unsigned char I2C_Read(bit ack){ unsigned char i, dat; bit inbit; dat = 0; for(i=1;i<=8;i++) { SCL_high(); inbit = SDA; dat = dat << 1; dat = dat | inbit; SCL_low(); } if (ack) SDA = 0; else SDA = 1; SCL_high(); SCL = 0; SDA = 1; delay(); return(dat); } //------------------------------------------------------------- void rtc_write(unsigned char add, unsigned char dat){ I2C_Start(); I2C_Write(0xd0); I2C_Write(add); I2C_Write(((dat/10)<<4)|(dat%10)); I2C_Stop(); } unsigned char rtc_read(unsigned char add){ unsigned char dat; I2C_Start(); I2C_Write(0xd0); I2C_Write(add); I2C_Start(); I2C_Write(0xd1); dat = I2C_Read(0); I2C_Stop(); dat = (dat & 0x0f) + (dat>>4)*10; return (dat); } void writeds(){ rtc_write(0x00, second); rtc_write(0x01, minute); rtc_write(0x02, hour); } void readds() { if(kt==0) { if(a==1) {writeds();a=0; } second = rtc_read(0x00); minute = rtc_read(0x01); hour = rtc_read(0x02); } } void hienthi(unsigned char x) { unsigned int i,temp; for(i=0;i<8;i++) { temp=x; temp=temp&0x80; if(temp==0x80) DATA1=1; else DATA1=0; x*=2; SCK1=0; SCK1=1; } } void quetled() { if(kt==0) { hienthi(ma[second%10]); hienthi(ma[second/10]); hienthi(ma[minute%10]); hienthi(ma[minute/10]); hienthi(ma[hour%10]); hienthi(ma[hour/10]); LACH1=0; LACH1=1; } if(kt==1) { hienthi(0xff); hienthi(0xff); hienthi(0xff); hienthi(0xff); hienthi(ma[hour%10]); hienthi(ma[hour/10]); LACH1=0; LACH1=1; } if(kt==2) { hienthi(0xff); hienthi(0xff); hienthi(ma[minute%10]); hienthi(ma[minute/10]); hienthi(0xff); hienthi(0xff); LACH1=0; LACH1=1; } if(kt==3) { hienthi(ma[second%10]); hienthi(ma[second/10]); hienthi(0xff); hienthi(0xff); hienthi(0xff); hienthi(0xff); LACH1=0; LACH1=1; } } void ktphim() { set0=set1;set1=set; if((set0==1)&&(set1==0)) { kt++; if(kt>3)kt=0; } switch(kt) { case 0:break; case 1: { up0=up1;up1=up; a=1; if((up0==1)&&(up1==0)) { hour++; if(hour>23)hour=0; } down0=down1;down1=down; if((down0==1)&&(down1==0)) { hour--; if(hour==-1) hour=23; } break; } case 2: { up0=up1;up1=up; a=1; if((up0==1)&&(up1==0)) { minute++; if(minute>59) minute=0; } down0=down1;down1=down; if((down0==1)&&(down1==0)) { minute--; if(minute==-1) minute=59; } break; } case 3: { up0=up1;up1=up;a=1; if((up0==1)&&(up1==0)) { second++; if(second>59) second++; } down0=down1;down1=down; if((down0==1)&&(down1==0)) { second=0; } break; } } } void ghi_dich(unsigned char t1,unsigned char t2,unsigned char t3,unsigned char t4,unsigned char t5,unsigned char t6,unsigned char t7,unsigned char t8) {unsigned char i,Q; Q=t8; for(i=0;i<8;i++){sdi1=(Q&0x01)?1:0;clk1=1;clk1=0;Q >>=1; } Q=t7; for(i=0;i<8;i++){sdi1=(Q&0x01)?1:0;clk1=1;clk1=0;Q >>=1; } Q=t6; for(i=0;i<8;i++){sdi1=(Q&0x01)?1:0;clk1=1;clk1=0;Q >>=1; } Q=t5; for(i=0;i<8;i++){sdi1=(Q&0x01)?1:0;clk1=1;clk1=0;Q >>=1; } Q=t4; for(i=0;i<8;i++){sdi1=(Q&0x01)?1:0;clk1=1;clk1=0;Q >>=1; } Q=t3; for(i=0;i<8;i++){sdi1=(Q&0x01)?1:0;clk1=1;clk1=0;Q >>=1; } Q=t2; for(i=0;i<8;i++){sdi1=(Q&0x01)?1:0;clk1=1;clk1=0;Q >>=1; } Q=t1; for(i=0;i<8;i++){sdi1=(Q&0x01)?1:0;clk1=1;clk1=0;Q >>=1; } str1=0; str1=1; } void sosanh(unsigned char gia_tri) {unsigned char k1,k2,k3; k1=0;k2=m1[gia_tri%8];k3=0xff; if((gia_tri>=0)&&(gia_tri<8)) ghi_dich(k2,k3,k3,k3,k3,k3,k3,k3); if((gia_tri>=8)&&(gia_tri<16)) ghi_dich(k1,k2,k3,k3,k3,k3,k3,k3); if((gia_tri>=16)&&(gia_tri<24))ghi_dich(k1,k1,k2,k 3,k3,k3,k3,k3); if((gia_tri>=24)&&(gia_tri<32))ghi_dich(k1,k1,k1,k 2,k3,k3,k3,k3); if((gia_tri>=32)&&(gia_tri<40))ghi_dich(k1,k1,k1,k 1,k2,k3,k3,k3); if((gia_tri>=40)&&(gia_tri<48))ghi_dich(k1,k1,k1,k 1,k1,k2,k3,k3); if((gia_tri>=48)&&(gia_tri<56))ghi_dich(k1,k1,k1,k 1,k1,k1,k2,k3); if((gia_tri>=56)&&(gia_tri<60))ghi_dich(k1,k1,k1,k 1,k1,k1,k1,k2); } void main() { I2C_Start(); I2C_Write(0xD0); I2C_Write(0x07); I2C_Write(0x10); I2C_Stop(); while(1) { ktphim(); readds(); quetled(); sosanh(second); } } Nhận vẽ mạch in ^_^ TEL: 0167 4500 365 Mail: Tags: NoneGiúp dịch code C sang asm
-
4rev Thành viên tích cực
- Tham gia: Jun 2009
- Bài viết: 253
- Share
-
Tweet
, nhớ sao viết vậy
). Sau đó bạn cứ F7, khi đó dung lượng code của bạn sẽ thấp hơn, code asm cũng dễ hiểu hơn vì nó đã được thiết lập là cố gắng nén cho dung lượng code thật nhỏ bằng cách dùng chương trình con (sub-routine). Có lẽ bạn biết đường vào phần Optimizer mà he, nếu ko thì google(onl tiệm nên ko có keil nên ko coi cụ thể đc
) Trong Keil C, code asm được dịch ra hơi khó nhìn ở chỗ tên của mấy chương trình con dùng để rẽ nhánh(sau mấy cái lệnh xJMP, djnz, cjne, jb,jnb...v.v... nói chung là lệnh rẽ nhánh), cho nên bạn ráng đọc rồi tìm vị trí mà nó muốn rẽ tới và sửa tên lại sao cho bạn dễ hiểu là đc(nếu cần). Hình như code này xử lý con DS1307 phải ko bạn! Comment
Gửi bài viết Huỷ bỏ -
binh_an_2012 Thành viên mới
- Tham gia: May 2012
- Bài viết: 17
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
kidteam Thành viên tích cực
- Tham gia: Nov 2010
- Bài viết: 1633
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
minhthanh29 Thành viên tích cực
- Tham gia: Jul 2011
- Bài viết: 201
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
minhthanh29 Thành viên tích cực
- Tham gia: Jul 2011
- Bài viết: 201
- Share
-
Tweet
, nhớ sao viết vậy
). Sau đó bạn cứ F7, khi đó dung lượng code của bạn sẽ thấp hơn, code asm cũng dễ hiểu hơn vì nó đã được thiết lập là cố gắng nén cho dung lượng code thật nhỏ bằng cách dùng chương trình con (sub-routine). Có lẽ bạn biết đường vào phần Optimizer mà he, nếu ko thì google(onl tiệm nên ko có keil nên ko coi cụ thể đc
) Trong Keil C, code asm được dịch ra hơi khó nhìn ở chỗ tên của mấy chương trình con dùng để rẽ nhánh(sau mấy cái lệnh xJMP, djnz, cjne, jb,jnb...v.v... nói chung là lệnh rẽ nhánh), cho nên bạn ráng đọc rồi tìm vị trí mà nó muốn rẽ tới và sửa tên lại sao cho bạn dễ hiểu là đc(nếu cần). Hình như code này xử lý con DS1307 phải ko bạn! -Mình không có phần mềm Keil C, mình vẫn chưa hiểu bạn có hình minh hoạ không. -Đúng rồi bạn code này là của đồng hồ số sử dụng 89 và DS1307 Nhận vẽ mạch in ^_^ TEL: 0167 4500 365 Mail: Comment
Gửi bài viết Huỷ bỏ -
4rev Thành viên tích cực
- Tham gia: Jun 2009
- Bài viết: 253
- Share
-
Tweet
(mình hum biết soft đó
) Keil C thì google có một nùi đó, có cr..k luôn. Bạn ko hiểu gì cứ copy đoạn ko hiểu cho vào google là có thôi!
Tui thấy cách của bạn binh_an_2012 có lý lắm đó
, nhưng chủ topic chỉ học ASM chứ chưa học C thì coi như pó tej phần "viết lưu đồ giải thuật theo code C" rùi
Thân! Comment
Gửi bài viết Huỷ bỏ -
minhthanh29 Thành viên tích cực
- Tham gia: Jul 2011
- Bài viết: 201
- Share
-
Tweet
(mình hum biết soft đó
) Keil C thì google có một nùi đó, có cr..k luôn. Bạn ko hiểu gì cứ copy đoạn ko hiểu cho vào google là có thôi!
Tui thấy cách của bạn binh_an_2012 có lý lắm đó
, nhưng chủ topic chỉ học ASM chứ chưa học C thì coi như pó tej phần "viết lưu đồ giải thuật theo code C" rùi
Thân! Bạn đọc được C không giúp mình viết lưu đồ giải thuật, thanks Nhận vẽ mạch in ^_^ TEL: 0167 4500 365 Mail: Comment
Gửi bài viết Huỷ bỏ -
minhthanh29 Thành viên tích cực
- Tham gia: Jul 2011
- Bài viết: 201
- Share
-
Tweet
Nhận vẽ mạch in ^_^ TEL: 0167 4500 365 Mail: Comment
Gửi bài viết Huỷ bỏ -
sang_dientu Thành viên tích cực
- Tham gia: Oct 2009
- Bài viết: 1563
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
4rev Thành viên tích cực
- Tham gia: Jun 2009
- Bài viết: 253
- Share
-
Tweet
Mà bạn có cái sơ đồ mạch ko, mình ko biết code này có phần cứng gì nên ko đảm bảo đc lưu đồ! Thân! Comment
Gửi bài viết Huỷ bỏ -
minhthanh29 Thành viên tích cực
- Tham gia: Jul 2011
- Bài viết: 201
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
minhthanh29 Thành viên tích cực
- Tham gia: Jul 2011
- Bài viết: 201
- Share
-
Tweet
Mà bạn có cái sơ đồ mạch ko, mình ko biết code này có phần cứng gì nên ko đảm bảo đc lưu đồ! Thân! Bạn giúp mình nha, thanks Nhận vẽ mạch in ^_^ TEL: 0167 4500 365 Mail:
Comment
Gửi bài viết Huỷ bỏ -
4rev Thành viên tích cực
- Tham gia: Jun 2009
- Bài viết: 253
- Share
-
Tweet
Comment
Gửi bài viết Huỷ bỏ -
minhthanh29 Thành viên tích cực
- Tham gia: Jul 2011
- Bài viết: 201
- Share
-
Tweet
Nhận vẽ mạch in ^_^ TEL: 0167 4500 365 Mail:
Comment
Gửi bài viết Huỷ bỏ
Bài viết mới nhất Collapse -
Trả lời cho Tư vấn. Nên mua máy mài, máy khoan cầm tay dùng loại công tắc nào ? bởi ittc Thế hãng Dewalt không ngon bằng Makita hả 2 bác...
- Channel: Điện tử gia dụng
-
Trả lời cho Tư vấn. Nên mua máy mài, máy khoan cầm tay dùng loại công tắc nào ? bởi bqviet Bạn mèomướp đúng rồi, ở VN cứ Makita là hợp lý hơn cả. Hàng chạy điện lưới có, chạy pin cũng có. Hàng chợ có, hàng nhái không thiếu, chính hãng cũng có luôn. Phụ kiện thay thế cũng sẵn. Còn gì tiện hơn ?
- Channel: Điện tử gia dụng
-
Trả lời cho Tư vấn. Nên mua máy mài, máy khoan cầm tay dùng loại công tắc nào ? bởi mèomướp Dạ chú dùng makita cho lành ạ...
- Channel: Điện tử gia dụng
-
Trả lời cho Xin ý kiến về mạch UPS 12v cho Modem/Wifi/Camera/DVR bởi mèomướp Dạ hông cần phức tạp như vậy đâu ạ. Chú cần 1 ắc qui 12v, 1 nguồn 13v để sạc nổi ắc qui và nối cấp cho mô đem luôn ạ. Nếu chú dùng pin thay cho ắc quy thì lại càng tốt vì pin nó có mạch bms ạ...
- Channel: Điện tử sáng tạo
-
Trả lời cho Tư vấn. Nên mua máy mài, máy khoan cầm tay dùng loại công tắc nào ? bởi ittc Em đang tìm máy chạy điện, thằng Milwaukee toàn máy chạy Pin thôi, mà thằng này cty em đang dùng, thấy dở ẹc...
- Channel: Điện tử gia dụng
-
Trả lời cho Tư vấn. Nên mua máy mài, máy khoan cầm tay dùng loại công tắc nào ? bởi bqviet Còn cả anh tài Milwaukee mở đại lý ở VN đâu vài năm. Đám máy mài cắt của hãng này vẫn dùng cò bóp kèm nút chốt.
- Channel: Điện tử gia dụng
-
Trả lời cho Tư vấn. Nên mua máy mài, máy khoan cầm tay dùng loại công tắc nào ? bởi ittc Úp, hóng thêm ý kiến ạ.
- Channel: Điện tử gia dụng
-
Trả lời cho Xin ý kiến về mạch UPS 12v cho Modem/Wifi/Camera/DVR bởi bqviet Mạch cồng kềnh nhưng khá bài bản. Nếu tự làm để học thì cũng đáng để bắt tay nghịch chơi. Nếu chỉ cần sản phẩm thì các sàn thương mại điện tử có sẵn UPS DC này ra 5V hoặc 12V rất sẵn, chạy pin, giá cũng không đắt.
- Channel: Điện tử sáng tạo
-
Bảo dưỡng máy phay CNC để duy trì độ chính xác và giảm rủi ro hư hỏng bởi mylinhatt Trong vận hành thực tế, nhiều xưởng gia công gặp tình trạng máy phay CNC bắt đầu sai kích thước, bề mặt rung nhẹ hoặc phát sinh lỗi thay dao dù chương trình và dao cắt không thay đổi. Phần lớn các vấn đề này không xuất phát từ lập trình mà đến từ việc bảo dưỡng máy chưa được thực hiện đúng và đủ....
- Channel: Máy công cụ
-
Trả lời cho Tư vấn. Nên mua máy mài, máy khoan cầm tay dùng loại công tắc nào ? bởi ittc Hì, em tính đi mua 1 cái máy Khoan và máy Mài (cắt), em đã chính thức gạt thằng BOSCH sang 1 bên vì giá cao hơn Dewalt và Makita, hơn nữa xem Cataloge của nó thì hàng ít model mẫu mã hơn. Thôi thì dùng gia đình Dewalt và Makita là ok rồi, thế...
- Channel: Điện tử gia dụng
Từ khóa » Chuyển Code C Sang Assembly Online
-
Compiler Explorer
-
C To Assembly Compiler And Interpreter
-
Convert C/C++ Code To Assembly Language - GeeksforGeeks
-
Giúp đỡ Chuyển Code C Sang Assembly - Dạy Nhau Học
-
TextMeister 2.0.1.0 - Chuyển đổi Các Ngôn Ngữ Lập Trình
-
Chuyển Code C Sang Assembly - Cộng đồng C Việt
-
C++ Editor Online
-
Top Website Viết Và Biên Dịch Code Online Tốt Nhất
-
Thử Thực Hiện 4 Stage Khi Compile C Bằng GCC | TopDev
-
Biên Dịch Chương Trình Assembly Chạy Trên Môi Trường Hệ điều Hành ...
-
Chuyện Này Có Lẽ Là đơn Giản ....nhưng ... [Archive]
-
Using GCC To Produce Readable Assembly? - Stack Overflow
-
Converting A C++ Funtion To Inline Assembly? [duplicate]
-
Quá Trình Biên Dịch Một Chương Trình C/C++ - TAPIT