miksi TI = 1 ennen printf ()?

H

hiclickme

Guest
Hei,
Käytin kirjoittaa ohjelman ASM lanuage.Koska se ryhmien isompi,
saan sekava.Nyt toteutettava vaihe C.

Miksi?
...
TI = 1
printf ( "miksi TI = 1 ennen printf ()? \ n");
...

Ajattelua ASM.Olen aina "CLR TI", jotta SBUF lähetä.Minusta sen pitäisi olla
...
TI = 0
printf ( "mitä tahansa tyyppi I kirjoita mitään cuz TI = 0, haha ... \ n")
...
Mutta se doens't työtä.Miksi?"TI = 1" tarkoittaa, että se lähettää tehnyt eikä se lähettää mielestäni.Miksi?

Kiitos paljon!

 
Haluan auttaa sinua, mutta ei ymmärrä anythnig kanssa asiasta.Voisitteko selittää perusteellisesti?

 
Hei, Free_Will.Sorry for my huono ilmaus!Olen oppimisen C kokoonpano kielellä.

Jos haluan lähettää 'A' kautta TXD,
haluan kirjoittaa kuten tämän ASM

MOV A, # 'A'
CLR TI
MOV SBUF, A
JNB TI, $

TI on setted 1 kun byte lähettää tehnyt, ja se lopettaa lähetä.Joten jos haluan sen lähettää,
tarvitsen TI = 0, ja ASM kielellä.Mutta printf () C lanuage,

TI = 1
printf ( "A");

sitä tarvitse TI = 1 lähettää.Miksi?

toisin sanoen, miksi ei?

TI = 0
printf ( "A");

 
Hei,

Tarkkaile ASM-koodit, että C-kääntäjän tuottamat ja verrata sitä sinun.

 
Kiitos Free_Will

Nyt tiedän, miksi
C: 0x040C 3099FD JNB TI (0x98.1), C: 040C
C: 0x040F C299 CLR TI (0x98.1)
C: 0x0411 F599 MOV SBUF (0x99), A

Tie vastaus on aina paljon tärkeämpi kuin vastaus

 
hiclickme wrote:Käytin kirjoittaa ohjelman ASM lanuage.
Koska se ryhmien isompi, saan sekava.
Nyt toteutettava vaihe C.Miksi?

...

TI = 1

printf ( "miksi TI = 1 ennen printf ()? \ n");
 
tom324 on oikeassa.
printf funktiokutsua putchar ja putchar tarkastuksia TI ensin.Varmista, ei merkki on lähettämistä.Se tarkoittaa, TI on 1, ennen kuin lähettää.

 

Welcome to EDABoard.com

Sponsor

Back
Top