include 'emu8086.inc'
#make_com#
org 100h
s1 dw 50,60,70,80,90,100,120,130,140,160,170,190,190,220,250,270,300
MOV SI,0
MOV CX,16
s2:
MOV AX,s1[SI]
s3:
INC SI
CMP AX,100
JBE s4
JA s5
s4:
PRINTf AX
JMP s3
s5:
CMP AX,200
JB s6
JA s7
s6:
PRINTf AX
JMP s3
s7:
PRINTf AX
JMP s3
END
;printf AX doesn't work and i want to print the contents of AX
ответ
; Printf AX не работает, и я хочу, чтобы распечатать содержимое AX
Вы не показали нам, что PRINTF должен делать. Таким образом, все ваши вызовы макросов PRINTf AX
могут быть в порядке.
Но ваша программа имеет 2 ошибки, которые мешают правильному выполнению.
- Программа .COM запускается сверху, но именно там вы разместили свои данные. Это не должно быть выполнено! Поэтому либо помещайте данные под кодом, либо перепрыгивайте данные.
- Данные, которые вы используете, имеют размер слова и, следовательно, вам нужно добавить 2 в регистр SI при итерации по данным.
Вы можете отобразить AX как есть, но вы увидите странные символы на экране. Необходима процедура преобразования из двоичного кода (AX) в строку. Следующий код помещает число в AX, преобразует AX в строку и отображает строку. Вы можете использовать процедуру number2string для ваших будущих программ. Скопируйте и вставьте следующий код в EMU8086 и запустить его:
.stack 100h
;------------------------------------------
.data
str db 6 dup('$') ;STRING TO STORE NUMBER.
;------------------------------------------
.code
;INITIALIZE DATA SEGMENT.
mov ax, @data
mov ds, ax
;CONVERT NUMBER TO STRING.
mov ax, 10382 ;ANY NUMBER.
call number2string ;CONVERT AX. RESULT IN "STR".
;DISPLAY STRING.
mov ah, 9
mov dx, offset str ;NUMBER CONVERTED.
int 21h
;WAIT FOR USER TO PRESS ANY KEY.
mov ah,7
int 21h
;FINISH PROGRAM.
mov ax, 4c00h
int 21h
;------------------------------------------
;NUMBER TO CONVERT MUST ENTER IN AX.
;ALGORITHM : EXTRACT DIGITS ONE BY ONE, STORE
;THEM IN STACK, THEN EXTRACT THEM IN REVERSE
;ORDER TO CONSTRUCT STRING.
proc number2string
mov bx, 10 ;DIGITS ARE EXTRACTED DIVIDING BY 10.
mov cx, 0 ;COUNTER FOR EXTRACTED DIGITS.
cycle1:
mov dx, 0 ;NECESSARY TO DIVIDE BY BX.
div bx ;DX:AX/10 = AX:QUOTIENT DX:REMAINDER.
push dx ;PRESERVE DIGIT EXTRACTED FOR LATER.
inc cx ;INCREASE COUNTER FOR EVERY DIGIT EXTRACTED.
cmp ax, 0 ;IF NUMBER IS
jne cycle1 ;NOT ZERO, LOOP.
;NOW RETRIEVE PUSHED DIGITS.
mov si, offset str
cycle2:
pop dx
add dl, 48 ;CONVERT DIGIT TO CHARACTER.
mov [ si ], dl
inc si
loop cycle2
ret
endp
немного больше объяснений: для будущих программ, процедуру number2string требует переменную в сегменте данных с именем «ул». Как вы видите в коде, «str» имеет длину 6, поскольку AX может содержать несколько 5 цифр или меньше, и, если вы хотите отобразить его, строки требуют знак «$», поэтому длина равна 6. Параметр для номер2string должен быть размещен на AX. Конечно, вы можете изменить имя переменной (str) и используемый регистр (AX).
- 1. Как распечатать содержимое NSSet?
- 2. Как распечатать содержимое QGraphicsView
- 3. Как распечатать содержимое TPanel?
- 4. Как распечатать содержимое QStringListModel?
- 5. Как распечатать содержимое объекта
- 6. Как распечатать содержимое файла?
- 7. Как распечатать содержимое массива
- 8. Как распечатать содержимое очереди
- 9. Как распечатать содержимое BSONDocument
- 10. как распечатать содержимое PYTHONPATH
- 11. Как распечатать содержимое класса?
- 12. Как распечатать содержимое ссылки?
- 13. Как распечатать содержимое в векторе
- 14. [Emu8086] Как напечатать десятичное число
- 15. Как распечатать содержимое широковещательной переменной
- 16. Как распечатать содержимое двусвязного списка?
- 17. Как распечатать содержимое моего TabControl?
- 18. Как распечатать прокручиваемое содержимое DIV
- 19. Как распечатать полное содержимое JScrollPane?
- 20. Как распечатать содержимое из файла
- 21. как распечатать содержимое char ** вектор
- 22. Как распечатать содержимое скрытого iframe?
- 23. Как распечатать содержимое запроса httprequest?
- 24. Как распечатать/экспортировать содержимое QTreeWidget?
- 25. Как распечатать содержимое всплывающее окно
- 26. reactivemongo: Как распечатать содержимое TraversableBSONDocument?
- 27. Как распечатать одно содержимое JPanel?
- 28. Как распечатать содержимое в RichTextBox в FoxPro
- 29. Как распечатать содержимое в коллекции в Java
- 30. Распечатать содержимое страницы
Вы должны преобразовать его в строку, затем отобразите его. –