這個彙編程式哪裡錯了,為什麼不能轉換顯示這個字元

2022-09-10 14:55:55 字數 3341 閱讀 8027

1樓:

換一種顯示方式就可以了:

「$」字元在dos的9號功能呼叫時是當作字串的結束標誌,所以不會顯示。但我們可以用dos的2號功能呼叫,一個一個字元去顯示。

源程式修改部分如下所示:(小寫部分是加的,行頭加;的語句去掉);----------------------------加密結束mov  dx, offset mes_omov  ah, 9               ;9號功能呼叫,顯示提示.

int  21h

mov cl,nnn

xor ch,ch

mov bx,offset k_s

n11:

mov ah,2

mov dl,[bx]

int 21h

inc bx

loop n11

;    mov  dx, offset k_s;    mov  ah, 9               ;9號功能呼叫,顯示密碼.

;    int  21h

;----------------------------顯示結束.

2樓:匿名使用者

int 21h的9號功能呼叫是以'$'結局的,程式感覺沒錯。

組合語言中,將字串用字元形式迴圈輸出,下面****錯了

3樓:做而論道

迴圈輸出?

是不受控制的不停輸出?

還是輸出到 $ 為止?

----------------------------data segment

string db 'hello, world !'

str_len equ $ - stringdata ends

code segment

assume cs:code, ds:datastart:

mov ax, data

mov ds, ax

mov ah, 02h

lea si, string

mov cx, str_len

next:

mov dl, byte ptr [si]int 21h

inc si

loop next

mov ah, 4ch

int 21h

code ends

end start

彙編如何輸入字元,再把它輸出?

4樓:手機使用者

看你是單個字元還是多個字元 1、單個字元輸入呼叫int 21h的01h功能,即mov ah,01h int 21h,這樣就可以從鍵盤輸入字元進al暫存器,然後,將剛才輸入的字元轉換為ascii碼,因為資料在記憶體中是以二進位制存在,顯示器顯示的是ascii碼。再呼叫02h功能,就可以顯示剛才鍵入的字元 2、而多個字元可以考慮迴圈輸入單個字元的方式,但更可以用下面的方式:0ah功能,這個是將鍵盤輸入的字串讀入緩衝區。

然後,也需要將字串中的字元逐個轉換為ascii碼,再呼叫09h可顯示輸入的字串。

彙編程式錯誤(大小寫字母轉換)

5樓:湯旺河邊

根據題意,指令lea dx,ds中的ds應為d0,你是想輸出d1字串之前,先輸出一個回車、換行。

首先顯示原字串(未經大小寫轉換的);然後把字串中的大寫字母轉換成小寫字母,顯示轉換後的字串;把字串中的小寫字母(經過第一次轉換,字串中的所有字母都是小寫字母了)轉換成大寫字母,顯示轉換後的字串,這時,字串中的所有字母都是大寫的了。

彙編 輸入一個字元,怎樣把它轉化成為數字

6樓:匿名使用者

mov ah,1

int 21h

第一行表示字元輸入功能(1號)賦值給ah

第二行是觸發上面的那條指令 內部中斷指令 使得輸入並顯示在螢幕上。

記憶體中存放的是一個字元的ascii碼 比如『$』這個是美元符 對應的ascii碼為24 通常表示字串的結尾。

(1)1號系統功能呼叫-鍵盤輸入並回顯

此呼叫的功能是系統掃描鍵盤並等待鍵盤輸入一個字元,有鍵按下時,先檢查是否是ctrl+break鍵,若是則將字元的鍵值(ascii碼)送入al暫存器中,並在螢幕上顯示該字元。

此呼叫沒有入口引數。

例如:下列語句可實現鍵盤輸入。

mov ah,01h ;01h為功能號

int 21h

(2)2號系統功能呼叫-顯示輸出

此呼叫的功能是向輸出裝置輸出一個字元。

入口引數:被顯示字元的ascii送dl。

例如:要在螢幕上顯示「$」符號,可用以下指令序列

mov dl,』$』

mov ah,02h

int 21h

(3)3號系統功能呼叫-非同步通訊輸入(從串列埠輸入字元)

3號系統功能呼叫的功能是將從非同步序列通訊口(預設為com1)輸入一個字元(或者ascii碼)。

出口引數:輸入的acsii碼送al暫存器中。

dos系統初始化時此埠的標準是字長8位、2400波特、一個停止位、沒有奇偶校驗位。

(4)4號系統功能呼叫-非同步通訊輸出(從串列埠輸出字元)

此呼叫的功能是系統將從非同步通訊口(預設為com1)輸出一個字元(或者ascii碼)。

入口引數:被輸出的字元的ascii碼送入dl中。

例如:現要將「$」這個符號通過非同步序列通訊口輸出,指令序列如下:

mov dl,』$』

mov ah,04h

in 21h

5)5號系統功能呼叫-印表機輸出(從串列埠輸出字元)

此呼叫的功能是將一個字元輸出到印表機(預設1號並行口)。

入口引數:欲列印的字元的ascii碼送入dl暫存器中。

6)6號系統功能呼叫-直接控制檯輸入輸出字元

此呼叫的功能是從鍵盤輸入一個字元,或輸出一個字元到螢幕。

如果(dl)=0ffh,表示是從鍵盤輸入字元。

當標誌zf=0時,表示有鍵被按下,將字元的ascii碼送入al暫存器中。

當標誌zf=1時,表示沒有鍵按下,暫存器al中不是鍵入字元的ascii碼。

如果(dl)≠0ffh,表示輸出一個字元到螢幕,將被輸出字元ascii碼送到dl中。此呼叫與1號、2號呼叫的區別在於不檢查ctrl+break。

7樓:

輸入的字元也是ascii碼啊,比如輸入'1',存在暫存器裡的值應該是31h,只要把這個值減去30h就可以得到1了

彙編程式設計:怎麼把字串轉換成ascii碼值?

求單片程式(彙編程式),求一個單片程式(彙編程式)

共陰數碼管,段接p2口 控制按鍵按p0.0,低電平有效。org 0000h start mov r0,00h mov dptr,tab loop mov a,r0 movc a,a dptr cpl a mov p2,a acall delay jb p0.0,num inc dec r0 mov ...

彙編程式的執行方法

組合語言源程式執行方法 1 找到一段起始地址為sa 0000 即起始地址的偏移地址為0 的容量足夠的空閒記憶體區。2 在這段記憶體區的前256個位元組中,建立一個稱為程式段字首 psp 的資料區,dos利用psp來和被載入程式進行通訊。3 從這段記憶體區的256位元組處開始 在psp的後面 將程式裝...

彙編程式 接受鍵盤輸入字元,若輸入為字母,則顯示 L ,若為數字,則顯示 D ,其他的則顯示 O

直接寫主程式哈 start mov ah,1 int 21h cmp al,30h jb other cmp al,39h ja next num1 mov dl,d mov ah,2 int 21h jmp exit next cmp al,41h jb other cmp al,z jb chr...