《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 一個匯編hello world程序

一個匯編hello world程序

2017-06-10
關鍵詞: 匯編

TITLE ***HELLO,WORLD進階程序之選擇分支 BY LLUCT***

DATA SEGMENT ;定義數據段
MSG1 DB '***WELCOME TO MY PROGRAM BY LLUCT***','$'
;定義輸出的第一個字符串信息,字符串必須用DB定義,$為結束標志
MSG2 DB '1:BASIC MESSAGE 2:ADVANCED MESSAGE','$'
;定義輸出的字符串信息:選擇菜單
MSG3 DB 'PLEASE CHOOSE:','$'
;定義輸出的字符串信息:選擇前綴
MSG4 DB 'HELLO,WORLD!^-^','$'
;定義輸出的字符串信息:分支1的信息
MSG5 DB 'THIS IS MY FIRST ASM_86 PROGRAM! @^-^@','$'
;定義輸出的字符串信息:分支2的信息
ERRMSG DB 'CHOOSE ERROR! -_-b','$'
;定義輸出的字符串信息:選擇錯誤信息
DATA ENDS ;數據段結尾

CODE SEGMENT ;定義代碼段
ASSUME CS:CODE ;規定CS的內容
ASSUME DS:DATA ;規定DS的內容

START: MOV AX,DATA ;程序從START開始
MOV DS,AX ;DS置初值,DATA的段地址

CALL ENTER ;調用顯示回車換行子程序
LEA DX,MSG1 ;輸出第一個字符串的偏移地址
CALL DISPCHS ;調用顯示字符串子程序
CALL ENTER ;調用顯示回車換行子程序
CALL ENTER ;這個...同上啊^-^

LEA DX,MSG2 ;輸出第二個字符串的偏移地址
CALL DISPCHS ;調用顯示字符串子程序

AGAIN: CALL ENTER ;定義AGAIN標號.用于選擇錯誤循環

LEA DX,MSG3 ;輸出第三個字符串的偏移地址
CALL DISPCHS ;調用顯示字符串子程序

MOV AH,01H ;調用1號功能:從鍵盤輸入一個字符并回顯
INT 21H ;完成輸入回顯
CMP AL,'1' ;輸入的字符和1相比較
JE BASICP ;如果相等,轉移到BASICP標號(JE=Jump if Equal)
CMP AL,'2' ;輸入的字符和2相比較 ||
JE ADVANP ;如果相等,轉移到ADVANP標號(JE=如果相等就轉移)
JMP ERROR ;否則就無條件轉移到ERROR標號

EXIT: MOV AH,4CH ;4C號功能調用:終止當前程序并返回調用程序
INT 21H ;返回DOS

BASICP: CALL ENTER ;什么,還要解釋啊.暈-_-!!!
LEA DX,MSG4 ;輸出第三個字符串的偏移地址
CALL DISPCHS ;調用顯示字符串子程序
CALL ENTER ;..........
JMP EXIT ;無條件轉移到EXIT標號

ADVANP: CALL ENTER ;55555555
LEA DX,MSG5 ;解釋了四次,應該懂了吧
CALL DISPCHS ;調用顯示字符串子程序
CALL ENTER ;再問就死給你看
JMP EXIT ;無條件轉移到EXIT標號

ERROR: CALL ENTER
LEA DX,ERRMSG ;輸出選擇錯誤信息
CALL DISPCHS ;調用顯示字符串子程序
MOV DL,07H ;輸出ASCII碼的報警(響鈴)控制符BEL(07H)
CALL DISPCH ;調用顯示單個字符子程序
CALL ENTER
JMP AGAIN

DISPCH PROC NEAR 
;顯示單個字符子程序,NEAR說明子程序和主程序在同一個代碼段中(現無主程序調用)
MOV AH,02H ;2號功能調用:顯示器輸出字符
INT 21H ;完成輸出顯示
RET ;返回
DISPCH ENDP ;子程序結尾

ENTER PROC NEAR ;顯示回車換行子程序
MOV DL,0DH ;輸出ASCII碼的回車控制符CR(0DH)
CALL DISPCH ;調用顯示單個字符子程序
MOV DL,0AH ;輸出ASCII碼的換行控制符LF(0AH)
CALL DISPCH ;調用顯示單個字符子程序
RET ;返回
ENTER ENDP ;子程序結尾

DISPCHS PROC NEAR
;顯示字符串子程序,NEAR說明子程序和主程序在同一個代碼段中(現無主程序調用)
MOV AH,09H ;9號功能調用:顯示字符串
INT 21H ;完成輸出顯示
RET
DISPCHS ENDP

CODE ENDS ;代碼段結尾
END START ;結束匯編

;把以上代碼復制到記事本等文本程序中,并保存.(如helloch.asm)
;編譯:masm helloch.asm
;連接:link helloch.obj
;執行:helloch.exe

======================================================

title ***hello,world進階之字符串輸入輸出 by lluct***

data segment ;定義數據段
input db 100 dup(?)
;定義輸入的字符串,字符串必須用db定義,長度為100個字節
msg1 db 'Hello,','$'
;定義輸出的前綴字符串信息,字符串必須用db定義,$為結束標志(24h)
msg2 db ',Welcome to here!','$'
;定義輸出的后綴字符串信息
headmsg db 'PLEASE INPUT YOUR NAME:','$'
;開始顯示的字符串信息
data ends ;數據段結尾

code segment ;定義代碼段
assume cs:code ;規定cs的內容
assume ds:data ;規定ds的內容

start: mov ax,data ;程序從start開始
mov ds,ax ;ds置初值,data的段地址
mov si,0 ;變址寄存器置初值0

call enter ;調用顯示回車換行子程序
lea dx,headmsg ;輸出開始顯示的字符串的偏移地址
call dispchs ;調用顯示字符串子程序
repeat: mov ah,01h 
;定義repeat標號,用于循環輸入單個字符.調用1號功能:從鍵盤輸入一個字符并回顯
int 21h ;完成輸入回顯
cmp al,0dh ;輸入的字符和CR(回車)比較
je exit ;如果等于回車就轉移到exit
mov input[si],al ;把al的值傳送到input的si地址中(好像是這樣吧)


inc si ;si加1
jmp repeat ;無條件轉移到repeat


exit: call enter
mov input[si],24h ;給輸入完成的字符串加上結束標志($)
call enter 
lea dx,msg1 ;輸出前綴字符串的偏移地址
call dispchs ;調用顯示字符串子程序
lea dx,input ;輸出剛才輸入的字符串
call dispchs 
lea dx,msg2
call dispchs
call enter

mov ah,4ch ;4c號功能調用:終止當前程序并返回調用程序
int 21h ;返回dos

enter proc near ;顯示回車換行子程序
mov dl,0dh ;輸出ascii碼的回車控制符cr(0dh)
call dispch 
mov dl,0ah ;輸出ascii碼的換行控制符lf(0ah)
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 ;結束匯編

;把以上代碼復制到記事本等文本程序中,并保存.(如heinout.c)
;編譯:masm heinout.asm
;連接:link heinout.obj
;執行:heinout.exe


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 朱竹清被吸乳羞羞漫画| 精品无码国产自产拍在线观看蜜 | 午夜精品久久久久蜜桃| 高清国产激情视频在线观看 | 好大好硬好深好爽的视频| 久久成人免费电影| 欧美日韩国产一区二区三区欧| 午夜大片免费完整在线看| 黑人巨鞭大战丰满老妇| 国产高清国内精品福利| 一级毛片一级毛片一级级毛片| 日韩一区二区三区免费视频| 亚洲婷婷在线视频| 男女一边摸一边做爽爽毛片 | 99re热久久这里只有精品首页| 成人永久免费福利视频app| 久碰人澡人澡人澡人澡人视频| 欧美黑人疯狂性受xxxxx喷水| 午夜神器成在线人成在线人免费| 高清中国一级毛片免费| 国产精品午夜爆乳美女| av无码av天天av天天爽| 成年美女黄网站小视频| 久久精品国产亚洲av瑜伽| 欧美性高清极品猛交| 你的腿再打开一点就能吃到了| 色www永久免费网站| 国产性夜夜春夜夜爽| 影音先锋男人看片资源| 夜夜嗨AV一区二区三区| 一级一级女人真片| 无码人妻精品中文字幕免费东京热| 亚洲AV无码专区国产乱码电影 | 污污污污污污www网站免费| 六月婷婷激情综合| 色一情一乱一伦一区二区三欧美| 国产成人精品日本亚洲直接| 2018中文字幕第一页| 在线看亚洲十八禁网站| 一个人免费视频观看在线www| 护士的护士服被扒了下来小说|