1樓:匿名使用者
;功能:顯示當前目錄下的文字檔案內容
eof = 1ah
dseg segment
fname db 'e:\asm\test.bat',0 ;檔案完整路徑名
error1 db 'file not found',07h,0 ;提示資訊
error2 db 'reading error',07h,0buffer db ? ;1位元組的緩衝區dseg ends
cseg segment
assume cs:cseg,ds:dsegstart: mov ax,dseg
mov ds,ax
mov dx,offset fname
mov ax,3d00h ;為讀開啟指定檔案int 21h
jnc open_ok ;開啟成功,轉
mov si,offset error1
call dmess ;顯示不成功資訊jmp over
open_ok:mov bx,ax ;儲存檔案柄cont: call readch ;從檔案中讀一個字元jc readerr ;如讀出錯,則轉
cmp al,eof ;讀到檔案結束符嗎?
jz type_ok ;是,轉
call putch ;顯示所讀字元
jmp cont ;繼續
readerr:mov si,offset error2call dmess
type_ok:mov ah,3eh ;關閉檔案int 21h
over: mov ah,0 ;結束程式int 16h
mov ah,4ch
int 21h
readch proc
mov cx,1 ;置讀位元組數
mov dx,offset buffer ;置讀緩衝區地址mov ah,3fh
int 21h
jc readch2 ;讀出錯,轉
cmp ax,cx ;判斷檔案是否結束mov al,eof ;檔案結束,置結束符jb readch1 ;檔案結束,轉
mov al,buffer ;檔案未結束,取所讀字元readch1:clc
readch2:ret
readch endp;;
;;顯示一個以0為結束符的字串
dmess proc
dmess1: mov dl,[si]
inc si
or dl,dl
jz dmess2
mov ah,2
int 21h
jmp dmess1
dmess2: ret
dmess endp
;顯示一個字元
putch proc
push dx
mov dl,al
mov ah,2
int 21h
pop dx
retputch endp
cseg ends
end star
我剛開始學彙編,這是書上一個例題,給你看看,masm編寫的
2樓:匿名使用者
clear:
cld ;清除方向標誌位
lea di,[2000h] ;設定起始地址mov cx,128 ;設定要清零的字數xor ax,ax ;ax清零
rep stosw ;重複串操作,將128個字清零
組合語言中如何對暫存器清零
3樓:匿名使用者
一般常用 xor指令
不但指令短,而且執行速度快。
4樓:匿名使用者
樓上的第三種好,只是在暫存器間操作,沒有到記憶體取數
5樓:鯤鵬展翅
以暫存器ax為例
1.mov ax,0
2.and ax,0
3.xor ax,ax
將30h單元開始的10個單元全部清零,試編寫程式(組合語言) 5
6樓:匿名使用者
mov di, 30h
mov al, 0
mov cx, 10
@1:stosb
loop @1
組合語言中的返回指令rst問題,組合語言中的返回指令Rst問題
先澄清一下你問得模糊的地方。1 你說的 rst 返回指令應該是 ret 吧?2 sp 不叫堆疊指令,它是堆疊指標,估計是stack pointer的首字母。該指標總是指向堆疊的棧頂,即始終存放的是棧頂的地址。堆疊的工作原理可簡述為 後進先出 即lifo,last in first out。具體解釋請...
組合語言buff什麼意思,組合語言中 BUFF DB 60 DUP 是什麼意思?
組合語言中buff這個關鍵字,所以出現這個字母組合應該是一個變數,從字面上理解應該是與儲存器相關的一個變數,比如開闢一個緩衝區用於收發串列埠資料等等。 君威 不帶引號的?指從buff的位置開始預留指定位元組數的記憶體空間 帶引號的?指從buff的位置開始連續存放指定位元組數的?字元 帶引號的 指從b...
關於組合語言移植性的問題,關於組合語言中的LOOP指令
兄弟,你理解錯了,首先你要明白,組合語言是一種針對具體機器的低階語言,這裡說的不同機器一般來講是指cpu指令系統不相相容的兩種機器,比如常用的8086與51,dsp,arm,等等,他們的指令系統都不是通用的。自然移植到別的機器上不行,舉個例子來說吧,假如51,的p0埠可以用來點亮一盞燈,但是對808...