Assembly wika tulong!!

I

Ins-ANI

Guest
Dito ay ang problema na pahayag:
>> WAP ang pag-inom ng isang string user mula sa at pagkatapos ay i-display ito.

solusyon (kung ano ako ay natagpuan hanggang ngayon)Code:

. Modelo Maliit. DATA

DISP1 DB 0DH, 0AH, "Ipasok ang gustong string =", 0DH, 0AH, "$"

DISP2 DB 0DH, 0AH, "Ang mga naka-imbak na string ay =", 0DH, 0AH, "$"

Strip DB (?). CODE

MOV pagbabawas, @ DATA

MOV DS, pagbabawasMOV Ah, 09H

Lea DX, DISP1

Int 21HMOV CL, 07H

Lea SI, StripLOOP2:

MOV Ah, 01H

Int 21HMOV [SI], ALInc SI

Dec CL

JNZ LOOP2MOV Ah, 09H

Lea DX, DISP2

Int 21HMOV CL, 07H

Lea SI, StripLOOP1:

MOV Ah, 02H

Lea DL, [SI]

Int 21HInc SI

Dec CL

JNZ LOOP1
MOV Ah, 4CH

Int 21HEND
 
May ka tried changing Lea DL, [SI] sa MOV DL, [SI]

Paano ang memory para sa Strip allocated?Mayroon ba kayong mga pagtukoy itinuturing na ito bilang:
Strip DB 00H, 00H, 00H, 00H, 00H, 00H ...

 
@ jayson
HINDI GOOD, Kapag ako gamitin ang syntax bilang ipinapayo sa pamamagitan ng sa iyo, i am nakararanas ng isang error sa linya 38, na
"Lea DL, [SI]"Pagkatapos ng 5 minuto Added:got it,
ako ay nagbago ang syntax sa

Strip DB 10 DUP (?)

at ang linya 38 sa MOV DL, SI

at ang mga code na gumagana .. ngayon kailangan mong patunayan na linya nagkaroon ng error.Added matapos 4 minuto:Guys, maaring makatulong sa akin kung bakit ang mga pagwawasto gumagana?

sa linya ng mas maaga ng 38 ako tried Lea DL, Strip
ngunit ito didn't trabaho.

parehas

Strip DB DUP (?) Ay hindi gumagana

bakit?

 
Sa pinakamaliit na Lea pangangailangan ng isang 16-bit patutunguhang magrehistro sa tindahan ng mga address, DL ay isang 8-bit magrehistro.

Strip DB DUP (?) Ay hindi wasto dahil sa ang syntax para sa DUP ay:DUP (initialvalue [[, initialvalue]]...)

count
DUP (initialvalue [[, initialvalue ]]...)

 
Ito ay isang programa na tumagal ng isang string mula sa gumagamit, at pagkatapos ay pagsubok kung gaano karaming beses ang isang naibigay na magpasinda nangyayari sa string.Code:

. Modelo Maliit. DATA

MSG1 DB 0DH, 0AH, "Ipasok ang string =", 0DH, 0AH, "$"

MSG2 DB 0DH, 0AH, "Ipasok ang character NA hinanap =", 0DH, 0AH, "$"

MSG3 DB 0DH, 0AH, "ANG COUNT NG karakter ay =", 0DH, 0AH, "$"

COUNT DB 01 DUP ()

STR1 DB 10 DUP ()

Pansamantalang trabaho DB 01 DUP (). CODE

MOV pagbabawas, @ DATA

MOV DS, pagbabawas

MOV ES, pagbabawasMOV Ah, 09H

MOV DX, Offset MSG1

Int 21HMOV CX, 07H

MOV SI, Offset STR1LOOP1: MOV Ah, 01H

Int 21HMOV [SI], ALInc SI

Dec CXJNZ LOOP1MOV Ah, 09H

MOV DX, Offset MSG2

Int 21HMOV SI, Offset pansamantalang trabahoMOV Ah, 01H

Int 21HMOV [SI], ALMOV CX, 07H

MOV Di, Offset STR1

XOR BL, BL

MOV SI, Offset pansamantalang trabaho

CLDKilatisin:

MOV AL, [SI]

SCASB

JNZ NEXT1

Inc BL

NEXT1:

Inc SI

Dec CL

JNZ ScanADD BL, 30H

Lea SI, COUNT

MOV [SI], BL
MOV [SI], BLMOV Ah, 09H

MOV DX, Offset MSG3

Int 21HMOV Ah, 02H

MOV DL, Offset COUNT

Int 21HMOV Ah, 4CH

Int 21HEND
 
Hindi ko nakita ng isang error sa unang anyo.Bakasin pagpapatupad sa debug.

PS: I wonder kung bakit ikaw ay gumagamit ng mga payo para sa mga simpleng mga variable.Ikaw ay maaaring sumulat ng halimbawaCode:

MOV Count, AL
 

Welcome to EDABoard.com

Sponsor

Back
Top