PDA

View Full Version : کد اسکی و کلیدهای دو کدی...



HosseinProgrammer
جمعه 14 دی 1386, 13:42 عصر
سلام.
می خواستم بدونم که در اسمبلی اگر بخوام کداسکی فلان کاراکتر (مثلا *) رو در مانیتور چاپ کنم ، چه کار باید بکنم؟

سوال دومم اینه که کاراکترهای دو کد اسکی صفحه کلید رو چطور میتونم استفاده کنم.

تو C++ اینطور جواب میداد.



ch=getch();
if(ch==NULL)
ch=getch();

ولی این روش توی اسمبلی جواب نمیده.

پیشاپیش از جوابتون ممنونم.

Delphi Coder
جمعه 14 دی 1386, 14:32 عصر
:int 21,1
^INT 21,1 - Keyboard Input with Echo

AH = 01

on return:
AL = character from standard input device

- waits for keyboard input from STDIN and echoes to STDOUT
- returns 0 for extended keystroke, then function must be
called again to return scan code
- if ~Ctrl-Break~ is detected, ~INT 23~ is executed




:int 21,2
^INT 21,2 - Display Output

AH = 02
DL = character to output

returns nothing

- outputs character to STDOUT
- backspace is treated as non-destructive cursor left
- if ~Ctrl-Break~ is detected, ~INT 23~ is executed

کپی شده از نرمافزار HelpPC

HosseinProgrammer
جمعه 14 دی 1386, 18:43 عصر
سلام.
ممنون. اولی (سوال دوم من) رو امتحان نکردم. ولی در مورد دومی (سوال اول من)، باید بگم که منظورم کداسکی کاراکتر است. ولی این اینتراپت و سرویس، کاراکتر موجود در dl را نمایش می دهد.

Delphi Coder
جمعه 14 دی 1386, 19:30 عصر
باید بگم که منظورم کداسکی کاراکتر است. ولی این اینتراپت و سرویس، کاراکتر موجود در dl را نمایش می دهد.
شما هر کاراکتری بخواید چاپ کنید کد اسکی رو میذارید تو DL و چاپ می کنید حالا اگه خود کد اسکی رو میخواید چاپ کنید خوب اونم یه عدد 1 تا 3 رقمی هست تبدیلش کنید به رشته و چاپ کنید. در ضمن می تونید ته رشته یه $ اضافه کنید و از تابع 9 وقفه 21 استفاده کنید. فکر نمی کنم در تبدیل عدد به رشته مشکل داشته باشید.

HosseinProgrammer
جمعه 14 دی 1386, 19:48 عصر
بله! ممنون! اصلا حواسم نبود!

omran azizi
پنج شنبه 04 بهمن 1386, 01:18 صبح
inputs string,8
atoi string
itoa result,ax
output result

Blacklord
چهارشنبه 10 بهمن 1386, 16:26 عصر
من اینو نوشته بودم قبلا:
;/////////////////////////////////////////////
;// ASCII.asm KV's Version ©
;/////////////////////////////////////////////
;// ... 065 = A 066 = B 067 = C ...
;// ...
;// Brings ASCII char of numbers.
;/////////////////////////////////////////////

.Model Small
.Stack 100
.Data
inter DB " = ",'$'
D1 DB 0
D10 DB 0
D100 DB 0
Counter DB 0
.Code
Main proc FAR
.Startup

MOV Cx,256
Again:
Cmp D1,10
JNE D10OK
Inc D10
MOV D1,0
D10OK:
Cmp D10,10
JNE D100OK
Inc D100
MOV D10,0
D100OK:
MOV Bh,D100
ADD Bh,48
MOV Ah,02h
MOV Dl,Bh
int 21h

MOV Bh,D10
ADD Bh,48
MOV Ah,02h
MOV Dl,Bh
int 21h

MOV Bh,D1
ADD Bh,48
MOV Ah,02h
MOV Dl,Bh
int 21h

MOV Ah,09h
Lea Dx,inter
int 21h

MOV Ah,02h
MOV Dl,Counter
int 21h

MOV Ah,02h
MOV Dl,' '
int 21h

Inc Counter
Inc D1

Loop Again

.exit
Main endp
End; Main