Ho letto e con il set di istruzioni 8086, si dice che un CMP (confronta) può impostare la bandierina. Capisco che un confronto sottrae due operandi ma mi stavo chiedendo se qualcuno può fornire un esempio quando questo è il caso.Perché CMP (confronta) a volte imposta un flag di trascinamento nell'assieme 8086?
Non riesco proprio a cogliere l'idea di aggiungere un numero e un numero negativo imposterà il flag di trasporto. Ho letto la bandiera del prestito, ma ho solo bisogno di un esempio per chiarire la mia comprensione di un'istruzione comparativa.
Inoltre, ho capito che se 3 - 5 = -2 impostarebbe il flag negativo ... quando è carry set?
L'affermazione "Devo fare un esempio" rende questo suono come un compito a casa. Se esegui il debug di un codice esistente e guardi la bandiera CY, sono sicuro che la vedrai impostata dopo alcune istruzioni ADD. –
Beh, sto creando la mia propria Instruction Set Architecture e sto solo leggendo le istruzioni 8086 e mi chiedo come un confronto (che sottrae 2 operandi e imposta i rispettivi flag) possa impostare il flag di carry.So quando l'ADD imposta il carry, ma sono un po 'scettico sul sottrarre/trasportare (da non confondere con il prestito). – faul
sull'8086 (e molti altri), il flag di trasporto svolge il doppio lavoro e rappresenta il prestito in operazioni di sottrazione o confronto. Se esegui un confronto in cui il valore che viene confrontato è maggiore di quello che è presente nel registro, c'è un prestito, ad es. Viene impostato il flag CY. Se il valore è uguale o inferiore al registro, non vi è alcun prestito e CY viene cancellato. – JustJeff