999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

匯編語言實(shí)現(xiàn)多種進(jìn)制的通用輸入輸出

2008-12-31 00:00:00羅南超向昌成李唐輝
電腦知識與技術(shù) 2008年36期

摘要:基于小模式,調(diào)用C語言的Scanf()和Printf()函數(shù)實(shí)現(xiàn)了在匯編語言中不同進(jìn)制的輸入和輸出,文章對在匯編程序中調(diào)用C函數(shù)的關(guān)鍵問題進(jìn)行了分析并據(jù)此給出了在匯編語言中實(shí)現(xiàn)多種進(jìn)制的通用輸入輸出源程序。

關(guān)鍵詞:匯編語言;小模式;調(diào)用C函數(shù);多種進(jìn)制;通用輸入輸出;源程序;實(shí)現(xiàn)

中圖分類號:TP312文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)36-3068-03

Realization of Varied Hexadecimal Universal Input-output with the Assembly Language

LUO Nan-chao1, XIANG Chang-cheng1,2, LI Tang-hui1,3

(1. Aba Teachers College Department of Computer Science, Pixian 623000, China;2. University of Electronic Science and Technology Institute of Applied Mathematics, Chengdu 610054, China;3. Sichuan University School of Computer, Chengdu 610054, China)

Abstract: Based on the small model, called the C language Scanf() and Printf() function to achieve in the compilation of language in different band of input and output, the article in the compilation process in the call C functions of the key issues were analyzed and, accordingly Language is given in the compilation of the band to achieve a variety of input and output common source.

Key words: assembly language;the small model;called C function;varied Hexadecimal;universal input-output;source program;realization

1 引言

在匯編語言中要實(shí)現(xiàn)不同進(jìn)制的輸入輸出一直比較麻煩,雖然有很多文章就這方面的問題做了深入細(xì)致地探討[1-2]。但所有的方法都較為繁瑣,程序長度較大,并且使用戶在編寫程序時往往為尋找入口參數(shù)感到力不從心,因此必須尋求一種簡單易行的方法,聯(lián)想到在C語言中要實(shí)現(xiàn)各種進(jìn)制的輸入輸出非常簡單,何不利用在匯編語言中調(diào)用C語言的輸入輸出函數(shù)實(shí)現(xiàn)各種的進(jìn)制的輸入輸出呢?下面就基于小模式下匯編語言如何調(diào)用C語言的Scanf()和Printf()函數(shù)實(shí)現(xiàn)多種進(jìn)制的通用輸入輸出進(jìn)行分析并給出具體源程序。

2 匯編語言程序調(diào)用C函數(shù)的關(guān)鍵

結(jié)合匯編語言與C語言連接的關(guān)鍵問題[3]和C語言與匯編語言混合編程的約定規(guī)則[4],總結(jié)得出匯編語言程序調(diào)用C函數(shù)的關(guān)鍵性問題:

2.1 匯編程序與C程序的模塊要正確連接

必須做到兩點(diǎn):一是匯編模塊必須采用和C模塊一致的存儲模式;二是匯編模塊必須遵守和C兼容的命名約定,包括函數(shù)和變量命名約定。

針對第一點(diǎn),這里采用小模式(.model small)實(shí)現(xiàn),在小模式下所有的指針都是Near型近指針,程序運(yùn)行效率高。

針對第二點(diǎn),主要完成對匯編語言程序所調(diào)用的C語言函數(shù)、變量用關(guān)鍵字EXTERN進(jìn)行說明,形式如下:

EXTERN被調(diào)用函數(shù)名:函數(shù)屬性

EXTERN變量名:變量屬性

其中函數(shù)屬性為near;變量屬性可以為byte、word、dword等。

例如在C語言程序中有如下說明:int i, array[10]; charch; long result;

匯編語言程序中,應(yīng)說明為:EXTERN i:word,arrray:word,ch:byte,result:dword

此外,為了使C語言的標(biāo)識符能在匯編語言中可見,必須用PUBLIC操作符定義它。

2.2 參數(shù)的正確傳遞是關(guān)鍵

匯編語言程序通過堆棧向C語言函數(shù)傳遞參數(shù),在匯編語言中將BP作為基址寄存器,調(diào)用程序先將來自于C程序中的參數(shù)壓人堆棧中(參數(shù)壓入堆棧的順序與實(shí)參表中參數(shù)的順序相反),然后當(dāng)需要使用這些參數(shù)時,再用BP加上不同的偏移量依次對堆棧中的數(shù)據(jù)進(jìn)行存取操作。在匯編語言程序調(diào)用C函數(shù)完成后,立即平衡堆棧。即清除堆棧里的參數(shù),恢復(fù)堆棧到調(diào)用前的情形。這里可以利用“add sp,imm”指令來完成,使SP的值增加一個指定的值。imm這個值應(yīng)該是堆棧中返回地址所占字節(jié)數(shù)與傳送參數(shù)所占用字節(jié)數(shù)之和。

為便于討論,下面以輸入輸出一個字為例,給出具體的輸入輸出源程序。

3 具體編程實(shí)現(xiàn)

3.1 十進(jìn)制、八進(jìn)制、十六進(jìn)制的通用輸入輸出源程序

.model small

.data

f21db 'Please input a data to A:',0;顯示輸入數(shù)據(jù)提示信息

f22db '%d',0 ;若是八進(jìn)制則改為%o,十六進(jìn)制則改為%x

f23db 'output data is:',0;顯示輸出二進(jìn)制數(shù)據(jù)提示信息

f24db '%d',0;若是八進(jìn)制則改為%o,十六進(jìn)制則改為%x

A dw 0;輸入的數(shù)據(jù)放入A存儲單元

.code

EXTRN _printf:NEAR

EXTRN _scanf:NEAR

PUBLIC _main

_main proc near

start:

mov ax,@data

mov ds,ax

mov ax,offset f21

push ax

call near ptr _printf

pop cx

lea ax,A

push ax

mov ax,offset f22

push ax

call near ptr _scanf ;輸入一個字長度的十進(jìn)制數(shù)

add sp,4

mov ax,offset f23

push ax

call near ptr _printf

pop cx

push A

lea ax,f24

push ax

call near ptr _printf ;輸出十進(jìn)制數(shù)

add sp,4

ret

_main endp

end start

3.2 二進(jìn)制的通用輸入輸出源程序

由于C語言中沒有提供直接輸入輸出二進(jìn)制的方法,這兒利用DOS中斷調(diào)用1號、2號功能分別實(shí)現(xiàn)二進(jìn)制的輸入輸出,具體源程序如下:

.model small

.data

f21 db 'Please input a data to A:',0; 顯示輸入二進(jìn)制數(shù)據(jù)提示信息

f23 db 'output Binary data is:',0 ; 顯示輸出二進(jìn)制數(shù)據(jù)提示信息

A DB 15 DUP(0);定義一個字長度的存儲單元用于存儲輸入的二進(jìn)制數(shù)

.code

EXTRN _printf:NEAR

PUBLIC _main

_main proc near

start:

mov ax,@data

mov ds,ax

mov ax,offset f21

push ax

call near ptr _printf

pop cx

xor si,si

next:mov ah,1 ;輸入16位二進(jìn)制數(shù)

int 21h

mov a[si],al

inc si

cmp si,15

jle next

mov dl,13;回車

mov ah,2

int 21h

mov dl,10;換行

mov ah,2

int 21h

mov ax,offset f23; 輸出16位二進(jìn)制數(shù)

push ax

call near ptr _printf

pop cx

xor si,si

next1:mov dl,A[si]

mov ah,2

int 21h

inc si

cmp si,15

jle next1

mov ah,1;屏幕回顯結(jié)果

int 21h

ret

_main endp

end start

4 程序驗(yàn)證

根據(jù)各種進(jìn)制的表示范圍,在輸入時進(jìn)行規(guī)范輸入,具體輸入輸出結(jié)果驗(yàn)證如下:

1) d方式輸入輸出:假設(shè)分別輸入為65535、0、32767、32768,則輸出結(jié)果為-1、0、32767、-32768(規(guī)范輸入范圍為0~65535)

2) o方式輸入輸出:假設(shè)輸入為0、7777、17777,則輸出結(jié)果為0、7777、17777(規(guī)范輸入范圍為0~177777)

3) x方式輸入輸出:假設(shè)輸入為0、1234、ffff,則輸出結(jié)果為0、1234、ffff(規(guī)范輸入范圍為0~ffff)

4) 二進(jìn)制方式的輸入輸出:假設(shè)輸入為0000000000000000、1010100000001011、1111111111111111,則輸出結(jié)果為0000000000000000、1010100000001011、1111111111111111(規(guī)范輸入范圍為0~1111,1111,1111,1111)

5 結(jié)束語

C語言與匯編語言的混合編程同時具有了兩種語言的優(yōu)點(diǎn),彼此相互調(diào)用,進(jìn)行參數(shù)傳遞,充分發(fā)揮各自的優(yōu)勢和特點(diǎn),利用現(xiàn)有的多種實(shí)用程序、庫程序等使軟件的開發(fā)效率大大提高,開發(fā)周期大大縮短,在工業(yè)控制和科學(xué)計算中具有很強(qiáng)的實(shí)用性。源程序模塊只對輸入輸出一個字的A數(shù)據(jù)進(jìn)行了探討,如果改變A的位數(shù),同時對程序作簡單改變,就可實(shí)現(xiàn)任意位數(shù)的各種進(jìn)制的輸入輸出。

參考文獻(xiàn):

[1] 楊繼鵬.用匯編語言實(shí)現(xiàn)多種數(shù)制的通用輸入方法[J].電腦學(xué)習(xí),2008(1):59-60.

[2] 林天山.多種數(shù)制顯示的匯編語言實(shí)現(xiàn)[J].新疆石油教育學(xué)院學(xué)報,2006(3):63-64.

[3] 王文東,李竹林,尚建人.匯編語言與C語言的混合程序設(shè)計技術(shù)[J].計算機(jī)技術(shù)與發(fā)展, 2006,8(16):18-20.

[4] 張永,黃建宇,劉治生.C語言與匯編語言混合編程的研究與實(shí)現(xiàn)[J]. 計算機(jī)與數(shù)字工程, 2006(5):120-122.

[5] 胡又農(nóng).IBM-PC匯編語言程序設(shè)計試題解[M].北京:人民郵電出版社,2004.

[6] 沈美明,溫冬嬋.IBM-PC匯編語言程序設(shè)計[M]. 北京:清華大學(xué)出版社,2001.

注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。”

主站蜘蛛池模板: 日韩欧美中文字幕一本| 国产无码在线调教| 亚洲国产精品日韩欧美一区| 亚洲一区二区黄色| 国产99精品久久| 亚洲国产成熟视频在线多多| 国产成人一区| 欧美成一级| 色老二精品视频在线观看| 亚洲高清在线播放| 高清无码一本到东京热| 国产理论一区| a欧美在线| 成人蜜桃网| 好吊日免费视频| 99er这里只有精品| 欧美日韩免费| 国产成人无码AV在线播放动漫| 亚洲伊人久久精品影院| 四虎精品国产永久在线观看| 国产精品欧美亚洲韩国日本不卡| 欧美激情综合| 精品国产免费第一区二区三区日韩| 免费人成网站在线观看欧美| 免费人成又黄又爽的视频网站| 无码专区第一页| 男女男精品视频| 精品伊人久久久大香线蕉欧美 | 99精品视频九九精品| 欧美中文字幕一区| 国产成人一区免费观看| 91精品国产福利| 国产91蝌蚪窝| 亚洲精品你懂的| 久久精品国产亚洲麻豆| 毛片基地视频| 91小视频在线观看免费版高清| 久久婷婷六月| 秋霞国产在线| 欧美三级视频在线播放| 国产免费a级片| 亚洲国产精品久久久久秋霞影院| 国产成人高清亚洲一区久久| 日韩精品欧美国产在线| 18禁影院亚洲专区| 中国精品久久| 青青国产在线| 精品一区二区无码av| 亚洲国产精品日韩av专区| 欧美一级在线看| 日本亚洲国产一区二区三区| 久久精品中文无码资源站| 一级毛片中文字幕| 黄色成年视频| 免费一级毛片在线观看| 色老头综合网| 国产成人免费观看在线视频| A级毛片无码久久精品免费| 亚洲天堂日本| 久草视频精品| 国产人在线成免费视频| 国内精品视频| 国产精品毛片在线直播完整版| 日本成人精品视频| 亚洲第一成年网| 国产一区二区三区在线精品专区| 色婷婷在线播放| 国产成人三级在线观看视频| 久草网视频在线| 久久精品欧美一区二区| 欧美精品亚洲精品日韩专区va| 男女男免费视频网站国产| 久久中文无码精品| 久久熟女AV| 国产男人天堂| 国产激爽大片高清在线观看| 国产91高跟丝袜| 综合色婷婷| 国产精品欧美在线观看| 欧美精品啪啪| 在线看AV天堂| 精品亚洲欧美中文字幕在线看|