1樓:邶玉蘭桑甲
data
segment
strdb
'hello!'
lenequ
$-str
;len為str所指字串長度
data
ends
code
segment
assume
cs:code,
ds:data
start:
movax,
data
movds,
axmov
cx,len
;cx儲存迴圈次數
leasi,
str;
字串首地址送si
display:
movdl,
[si]
;依次取str所指字串中單個字元送dl
call
disp
;呼叫顯示字元子程式
incsi
;字串偏移地址加1
loop
display
movah,
4chint
21h;顯示字元子程式,入口引數在dl
disp
proc
push
axmov
ah,02h
int21h
popax
retdisp
endp
code
ends
endstart
彙編顯示一個字串的程式?
2樓:匿名使用者
org 0100h ; 告訴編譯器程式載入到 0100h處mov ax, cs
mov ds, ax
mov es, ax
call dispstr ; 呼叫顯示字串例程jmp $ ; 無限迴圈
dispstr:
mov ax, bootmessage
mov bp, ax ; es:bp = 串地址mov cx, 16 ; cx = 串長度mov ax, 01301h ; ah = 13, al = 01hmov bx, 000ch ; 頁號為 0(bh = 0) 黑底紅字(bl = 0ch,高亮)
mov dl, 0
int 10h ; 10h 號中斷
retbootmessage: db "hello world!"
times 510-($-$$) db 0 ; 填充剩下的空間,使生成的二進位制**恰好為
; 512位元組
dw 0xaa55 ; 結束標誌
3樓:匿名使用者
怎麼也不弄點懸賞分 啊,呵呵
輸入後回車顯示大寫字母
data segment
a db 'enter the string:$'
buf db 100
len db ?
str db 100 dup(?)
zs db 0dh,0ah
we db 100 dup('$')
data ends
code segment
main proc far
assume cs:code,ds:datastart: push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
lea dx,a
mov ah,9h
int 21h
lea dx,buf
mov ah,0ah
int 21h
mov cl,len
mov ch,0
lea bx,str
lea si,we
cont: mov al,0
mov al,[bx]
cmp al,'a'
jb next
cmp al,'z'
ja next
sub al,32
mov [si],al
jmp next2
next: mov [si],al
jmp next2
next2: inc bx
inc si
loop cont
mov dx,0
lea dx,zs
mov ah,9h
int 21h
retmain endp
code ends
end start
4樓:匿名使用者
data segment
str db 'hello!'
len equ $-str ; len為str所指字串長度data ends
code segment
assume cs:code, ds:datastart:
mov ax, data
mov ds, ax
mov cx, len ; cx儲存迴圈次數lea si, str ; 字串首地址送sidisplay:
mov dl, [si] ; 依次取str所指字串中單個字元送dlcall disp ; 呼叫顯示字元子程式inc si ; 字串偏移地址加1
loop display
mov ah, 4ch
int 21h
;顯示字元子程式,入口引數在dl
disp proc
push ax
mov ah,02h
int 21h
pop ax
retdisp endp
code ends
end start
5樓:匿名使用者
在什麼環境中實現啊!
組合語言怎麼實現一個字串的輸入與輸出
6樓:匿名使用者
組合語言實現一個字串的輸入與輸出,可以呼叫dos功能中斷完成。
示例程式如下:
;組合語言輸入一串字串,可以呼叫dos功能中斷int 21h的06h功能。
;程式功能:輸入一串字元,以回車符結束,輸入字串最大長度200字元;
; 輸入結束在下一行輸出此字串。
data segment
str db 201 dup (0dh)
data ends
code segment
assume cs:code,ds:datamain proc far
start:
mov ax,data
mov ds,ax
lea si,str
mov cx,200
inpstr: mov ah,06h
int 21h
jnz inpstr;無字元可讀
mov [si],a1
inc si
xor al,0dh
jz endinp
loop inpstr
endinp: mov al,0dh
mov [si],a1
mov dl,0ah;回車換行
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
lea si,str;輸出字串
output: mov dl,[si]
cmp dl,0dh
jz endout;已到字串尾
mov ah,02h
int 21h
inc si
jmp output
endout: mov ah,4chint 21h
retmain endp
code ends
end start
7樓:志強強吧
輸入:data segment
buff db 100
db ?
db 100 dup(?)
data ends
mov ax,data
mov ds,ax
lea dx,buff
mov ah,0ah
int 21h
輸出:hello
mes db 'hello $'
mov ax,data
mov ds,ax
lea dx,mes
mov ah,9
int 21h
8樓:灬**灬銘
用21號中斷的10號功能輸入。。9號功能輸出。。
9樓:專業保證
mov ax 0ah
int 21h
mov ax 09h
int 21h
用組合語言輸出一個字串,在螢幕的下一行顯示出來
10樓:遊子
string db 'what are you doing?','$'
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h ;前面的是輸出回車換行符(2號功能呼叫)
mov dx,offset string
mov ah,9
int 21h ;輸入字串(9號功能呼叫)
怎麼用組合語言編寫一個程式,統計字串的長度並輸出
11樓:允天曼
ho彙編?? 不是很懂.用字串.length()看是不是能獲得長度?int i =字串.indexof($)獲得位置字串.substring(i,"");
12樓:匿名使用者
組合語言編語言也分好多種的,你說的是哪一種語言
13樓:匿名使用者
data segment
msg1 db 'length:','$'
shex db '0123456789abcdef$'
maxlen equ 200h
data ends
code segment ;**段定義assume cs:code,ds:datastart:
mov ax,data
mov ds,ax
;初始化需要的暫存器
mov ax,0
mov bl,24h
mov di, offset msg1
;迴圈比較字串中的每個字元,並把統計值放在ax中myloop:
cmp byte ptr[di], bl
jz exit
inc di
inc ax
jmp myloop
exit:
push ax
;顯示提示內容
mov dx,offset msg1
mov ah,9h
int 21h
pop ax
call printlen
mov ah,4ch
int 21h
;列印出長度,長度儲存在ax裡
printlen proc near
mov cx,4
printloop:
rol ax,1
rol ax,1
rol ax,1
rol ax,1
push ax
mov dl,al
and dl,0fh
mov bx, offset shex
add bl,dl
mov dl, byte ptr [bx]mov ah,2
int 21h
pop ax
loop printloop
retprintlen endp
code ends
end start
彙編顯示字串的程式,彙編顯示一個字串的程式
org 0100h 告訴編譯器程式載入到 0100h處mov ax,cs mov ds,ax mov es,ax call dispstr 呼叫顯示字串例程jmp 無限迴圈 dispstr mov ax,bootmessage mov bp,ax es bp 串地址mov cx,16 cx 串長度m...
編寫一下程式從鍵盤上輸入字串,統計字串中英文字母的個數及數字的個數
不用那麼複雜,漢字倆位元組,英文一個位元組,計算下關係就可以了 public class test public class test else if value 65 value 90 value 97 value 122 else system.out.println 數字個數 num 字母個數...
組合語言 底下的程式顯示cmp,0和test不正確為什麼啊這不是間接定址嗎
已經改過了,si 是暫存器間接定址,但是無變數名的暫存器變數定址屬於無型別量,後面的立即數也是無型別量,所以不符合語法規則,使用ptr偽指令即可修改。還有x屬於位元組型變數,所以不要和8000h比,和80h比就夠了,你不就是想驗證一下零的最高位是一還是零嗎?data segment x db 9,4...