❶ 匯編語言編程,寫代碼
;---------------------------
ASSUME CS:CC, DS:QW
;---------------------------
QW SEGMENT
M_1 DB 12, 13, 10, -5, -85, 37, 92, -25, 94, 10, -36
DB 1, 100, 12, -37, 85, -6, 28, 125, 34, 17, -92
LLL EQU $ - M_1
M_P DB 101 DUP(0)
M_N DB 101 DUP(0)
MSG DB 13, 10, 'Press any key to continue ... $'
O_P DB 13, 10, '+$'
O_N DB 13, 10, '-$'
QW ENDS
;---------------------------
CC SEGMENT
START:
MOV AX, QW
MOV DS, AX
;
CALL TONGJI
CALL DISPLAY
EXIT:
LEA DX, MSG
MOV AH, 9
INT 21H
MOV AH, 7
INT 21H
MOV AH, 4CH
INT 21H ;返回DOS
;---------------------------
TONGJI:
MOV BX, OFFSET M_1
MOV SI, OFFSET M_P
MOV DI, OFFSET M_N
MOV CX, LLL
LP: MOV AL, [BX]
CMP AL, 128
JB ZHENG
MOV [DI + 1], AL
INC DI
INC M_N
JMP NEXT
ZHENG:
MOV [SI + 1], AL
INC SI
INC M_P
NEXT:
INC BX
LOOP LP
RET
;---------------------------
DISPLAY:
LEA DX, O_P
MOV AH, 9
INT 21H
MOV AL, M_P
MOV AH, 0
CALL OUTPUT
LEA DX, O_N
MOV AH, 9
INT 21H
MOV AL, M_N
MOV AH, 0
CALL OUTPUT
RET
;---------------------------
OUTPUT:
MOV BX, 10
MOV CX, 0
OL1:MOV DX, 0
DIV BX
ADD DL, '0'
PUSH DX
INC CX
CMP AX, 0
JNZ OL1
MOV AH, 2
OL2:POP DX
INT 21H
LOOP OL2
RET
;---------------------------
CC ENDS
END START
;---------------------------
程序執行結果如下:
C:\MASM>ww
+15
-7
Press any key to continue ...
C:\MASM>
❷ 求匯編程序代碼。。。。
title ***簡單密碼輸入進階 by lluct***
data segment ;定義數據段
headmsg db ' ',0dh,0ah
db '+----------------------------------------------+',0dh,0ah
db '| Simple input password system for asm program |',0dh,0ah
db '| have a fun.^-^. |',0dh,0ah
db '| Poor Programmer:lluct Date:Febuary,31 2007 |',0dh,0ah
db '+----------------------------------------------+',0dh,0ah
db 0dh,0ah,' OUTPUT :','$'
;定義頭信息組
msg1 db 'INPUT5201314','$'
;定義輸入密碼正確後顯示出來的信息
msg2 db '123456','$'
;定義輸入密碼錯誤後顯示出來的信息
cmpare db '5201314','$'
;定義密碼
input db 100 p (?)
;定義輸入的字元串,字元串必須用db定義,長度為100個位元組
data ends ;數據段結尾
code segment ;定義代碼段
assume cs:code ;規定cs的內容
assume ds:data ;規定ds的內容
start_program: ;程序從這里開始
mov ax,data ;把data段地址賦給ax
mov ds,ax ;ds置初值,data的段地址
mov si,0 ;變址寄存器初值為0
call enter ;調用顯示回車換行子程序
lea dx,headmsg ;輸出頭信息組的偏移地址
call dispchs ;調用顯示字元串子程序
repeat_input: ;循環輸入單個字元
mov ah,08h ;調用8號功能:鍵盤輸入字元(無回顯)
int 21h ;完成輸入
mov dl,2ah ;輸出ascii碼的*號
push ax ;保護原來輸入的字元
call dispch ;調用單個字元回顯子程序
pop ax ;恢復原來輸入的字元
cmp al,0dh ;是否回車
je finished_input ;是就轉移到finished_input
mov input[si],al ;保存單個字元
inc si ;訪問下一個相對地址
jmp repeat_input ;無條件轉移到repeat_input
finished_input: ;完成輸出
mov input[si],24h ;給剛才輸入的字元串加結束標志($)
call enter
mov si,0 ;si置0
mov di,0 ;di置0
mov cx,8 ;設置檢測密碼的長度,要包括結束標志
check_password: ;檢測密碼
cmp cx,0 ;cx為是否為0
je right ;是就轉移到right
mov bl,input[si] ;把input的si的地址內的信息傳送到bl
mov dl,input[di] ;把cmpare的di的地址內的信息傳送到dl
cmp dl,bl ;檢查dl和bl是否一樣
jne error ;不是就轉移到error
inc si ;si加1
inc di ;di加1
dec cx ;cx減1
jmp check_password
right:
call enter
lea dx,input
call dispchs
call enter
jmp exit
error:
call enter
lea dx,msg2
call dispchs
mov dl,07h ;輸出ascii碼的報警(響鈴)控制符bel(07h)
call dispch
call enter
jmp exit
exit: mov ah,4ch ;4c號功能調用:終止當前程序並返回
int 21h ;返回dos
enter proc near ;顯示回車換行子程序
mov dl,0dh ;輸出ascii碼的回車控制符cr
call dispch
mov dl,0ah ;輸出ascii碼的換行控制符lf
call dispch
ret ;返回
enter endp
dispch proc near ;顯示單個字元子程序
mov ah,02h ;2號功能調用:顯示器輸出字元
int 21h ;完成輸出顯示
ret
dispch endp
dispchs proc near ;顯示字元串子程序
mov ah,09h ;9號功能調用:顯示字元串
int 21h
ret
dispchs endp
code ends ;代碼段結尾
end start_program ;結束匯編
看看行不行
❸ 匯編語言程序代碼
DATAS SEGMENT
buf db 100 p('$')
cuf db 0ah,0dh,?,20h,?,20h,?,'$'
DATAS ENDS
STACKS SEGMENT
dw 10 p(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov cx,99
lea si,buf
a1: mov ah,1
int 21h
mov [si],al
inc si
dec cx
jz a2
cmp al,0dh
je a2
jmp a1
a2: mov dx,3030h
mov bl,31h
mov cx,99
lea si,buf
a7: cmp byte ptr[si],0dh
je a8
cmp byte ptr[si],'-'
je a3
cmp byte ptr[si],30h
je a4
cmp byte ptr[si],' '
je a6
jmp a5
a3: inc dl;負數
jmp a5
a4: inc dh;零
jmp a5
a6: inc bl
a5: inc si
dec cx
jnz a7
a8: sub bl,dh
add bl,30h
sub bl,dl
add bl,30h
mov cuf+2,bl
mov cuf+4,dh
mov cuf+6,dl
lea dx,cuf
mov ah,9
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START
;只能輸入個位數,數與數空格隔開,負數需要加'-'在前面。顯示順序:正數 零 負數。
❹ 解說下匯編語言寫個程序里的代碼
出錯的根本原因是找不到指定的文件。無非兩種可能之一:
1、文件不存在
2、雖然存在,但路徑不對,編譯器找不到
include是包含的意思,include windows.inc 就是要把文件windows.inc納入到當前文件中,使之成為一體。
windows.inc、user32.inc、user32.lib、kernel32.inc、kernel32.lib、comdlg32.inc、comdlg32.lib都是32位匯編下的宏文件和鏈接庫文件,主要是為32位匯編程序提供的。你用的是8086匯編工具,屬於16位匯編,這些宏文件和鏈接庫文件在16位匯編下多數用不上。
❺ 用匯編語言編寫一完整程序!
摘要 DATAS SEGMENT
❻ 匯編語言編寫程序代碼
家裡電腦有這樣的代碼但是你中午之前要肯定不行了
我這里有給定數字的計算正負個數的。你添加個手動輸入數值的功能就可以實現你的要求
data segment
MSG DB 20,-3,0,-59,60,-46,-7 ;這里重新定義長度
cunt1 equ $-msg;後面需要重新賦值
cunt2 db 0 ;正數置初值
cunt3 db 0 ;0數置初值
cunt4 db 0 ;負數置初值
buffer db 10h p(0)
data ends
code segment
assume ds:data,cs:code
mov ax,data
mov ds,ax
mov ax,0
mov si,0;下一句就執行鍵盤輸入數據,計算輸入的字元個數
mov cx,cunt1;置循環值,輸入字元的總數
lp: mov al,msg[si]
test al,ffh;測試是否為0
jz lk1
test al,10000000b;測試符號位
jz lk2
inc cunt4;負數計數加一
lk1: inc cunt3;0數計數加一
lk2: inc cunt2;正數計數加一
inc si;指向下一個數據
loop lp;後面添加顯示的代碼就可以了
code ends
end start
❼ 什麼是匯編 匯編代碼是什麼呀 詳細些
■什麼是匯編語言
匯編語言(Assembly Language)是面向機器的程序設計語言。
在匯編語合中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標號(Label)代替地址媽。這樣用符號代替機器語盲的二進制碼,就把機器語音變成了匯編語言。於是匯編語言亦稱為符號語言。
使用匯編語言編寫的程序,機器個能直接識別,要由一種程序將匯編語言翻譯成機器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統軟體中語言處理系統軟體。匯編語言把匯編程序翻譯成機器語言的過程稱為f匯編。
匯編語言比機器語言易於讀寫、易於調試和修改,同時也具有機器語言執行速度快,占內存空間少等優點,但在編寫復雜程序時具有明顯的局限性,匯編語言依賴於具體的機型,不能通用,也不能在不同機型之間移植。
■對於不同型號的計算機,有著不同的結構的匯編語言
匯編語言由於採用了助記符號來編寫程序,比用機器語言的二進制代碼編程要方便些,在一定程度上簡化了編程過程。匯編語言的特點是用符號代替了機器指令代碼,而且助記符與指令代碼一一對應,基本保留了機器語言的靈活性。使用匯編語言能面向機器並較好地發揮機器的特性,得到質量較高的程序。
匯編語言是面向具體機型的,它離不開具體計算機的指令系統,因此,對於不同型號的計算機,有著不同的結構的匯編語言,而且,對於同一問題所編制的匯編語言程序在不同種類的計算機間是互不相通的。
匯編語言中由於使用了助記符號,用匯編語言編制的程序輸入計算機,計算機不能象用機器語言編寫的程序一樣直接識別和執行,必須通過預先放入計算機的"匯編程序"的加工和翻譯,才能變成能夠被計算機識別和處理的二進制代碼程序。用匯編語言等非機器語言書寫好的符號程序稱為源程序,運行時匯編程序要將源程序翻譯成目標程序。目標程序是機器語言程序,它一經被安置在內存的預定位置上,就能被計算機的CPU處理和執行。
匯編語言像機器指令一樣,是硬體操作的控制信息,因而仍然是面向機器的語言,使用起來還是比較繁瑣費時,通用性也差。但是,匯編語言用來編制系統軟體和過程式控制制軟體,其目標程序佔用內存空間少,運行速度快,有著高級語言不可替代的用途。
■html屬於匯編嗎?
不屬於匯編語言。它是Hypertext Markup Language的縮寫,用來編寫網頁的語言.通常一個網頁的網址最後面有.html或者.htm都是用這種語言編寫的.
另外,它一般用來編寫靜態網頁,現在最流行的動態語言有ASP,.NET和PHP等等.
❽ 求匯編語言源代碼
第一次發的還錯了,調試成功的代碼。
datasegment
Sdb'qwertyuiopasdfg','$';原字元串
S1db15p(0)
db'$';目標字元串db'$'
dataends
assumecs:code,ds:data
codesegment
start:movax,data;載入DS
movds,ax
movsi,offsetS;字元源地址
movdx,si;顯示原字元
movah,9
int21h
movcx,15;復制S字元串到S1
movbx,offsetS1
t:
moval,[si]
mov[bx],al
incsi
incbx
loopt
movsi,offsetS1
movcx,15;計數
ss1:
movdi,si;di指向si的下一位
incdi
movdx,1
ss2:
cmpdx,cx;如果dx大於等於cx跳至s4
jaess4
moval,[si]
cmpal,[di];比較[si][di]的值如果大於交換
jbess3
xchgal,[di]
mov[si],al
ss3:
incdi;為下次循環做准備
incdx
jmpss2
ss4:
incsi;指向下一個字元
loopss1
movdl,0ah;顯示回車換行
movah,2
int21h
movdl,0dh
int21h
movdx,offsetS1;顯示升序字元串
movah,9
int21h
movah,0;等待字元輸入
int16h
movah,4ch;結束
int21h
codeends
endstart
❾ 求匯編語言簡單程序代碼(完整的)
用C比較好寫,匯編很困難
❿ 一個簡單的匯編程序代碼
代碼可以運行。
樓上的說得輕巧,數據既有正數又有負數,要是寫代碼讓它輸出的話,那代碼很長的。
我不知道
emu8086
是什麼來的,不過我在debug裡面可以查啊
在debug裡面運行,不要用g命令,用t命令,不斷的按t、enter。等到寄存器CX的值為0的時候,就打入:d
ds:0,再按enter。就可以看到很多數據。
max的偏移地址為0015(兩個位元組),min偏移地址為0017.
這樣就找的了。。