用汇编语言编写程序,建立一数据表,表中存放1-9的平方,查表求某数字的平方。

用汇编语言编写程序,建立一数据表,表中存放1-9的平方,查表求某数字的平方。,第1张

程序如下:

;--------------------------------------------------------------------

DATA SEGMENT

; 数据表格

TABLE DW 0, 1, 4, 9, 16, 25, 36, 49, 64, 81

DATA ENDS

;--------------------------

STACK SEGMENT

DW 128 DUP(0)

STACK ENDS

;--------------------------

CODE SEGMENT

ASSUME CS: CODE, DS: DATA, SS: STACK

START:

MOV AX, DATA

MOV DS, AX

MOV ES, AX

M_LOOP:

MOV AH, 1

INT 21H

CMP AL, 1BH

JZ EXIT

CMP AL, 30H

JL M_LOOP

CMP AL, 39H

JG M_LOOP

SUB AL, 30H

;------------------------------

MOV BX, TABLE

PUSH CX

SHL AL, 1

MOV AH, AL

INC AH

XLAT

MOV CL, AL

MOV AL, AH

XLAT

MOV CH, AL

MOV AX, CX

POP CX

;------------------------------

CALL CR_LF

CALL OUT_AX

CALL CR_LF

JMP M_LOOP

;------------------------------

EXIT:

MOV AX, 4C00H ;EXIT TO OPERATING SYSTEM

INT 21H

;--------------------------------------------

OUT_AX PROC NEAR

PUSH BX

MOV DL, 0

CALL OUT_ASC

MOV BL, 100

DIV BL

MOV DL, AL

CALL OUT_ASC

MOV AL, AH

XOR AH, AH

MOV BL, 10

DIV BL

MOV DL, AL

CALL OUT_ASC

MOV DL, AH

CALL OUT_ASC

POP BX

RET

OUT_AX ENDP

;--------------------------------------------

OUT_ASC PROC NEAR

ADD DL, 30H

CALL OUT_DL

RET

OUT_ASC ENDP

;--------------------------------------------

CR_LF PROC NEAR

MOV DL, 10

CALL OUT_DL

MOV DL, 13

CALL OUT_DL

RET

CR_LF ENDP

;--------------------------------------------

OUT_DL PROC NEAR

PUSH AX

MOV AH, 02H

INT 21H

POP AX

RET

OUT_DL ENDP

;--------------------------------------------

CODE ENDS

END START

------------------------------------------------------------------

; 下面的程序是16位汇编,编译通过,运行正确。

; Program Name: Digi_ASCASM

Digi_ASC SEGMENT

ASSUME CS:Digi_ASC,DS:Digi_ASC

ORG 100H

Start: JMP Begin

; 功能:取光标位置

; 入口:无

; 出口:DH=行号,DL=列号

; 用法:GetCursor

GetCursor Macro

PUSH AX

PUSH BX

XOR BX,BX

MOV AH,3

INT 10H

POP BX

POP AX

EndM

; 功能:置光标位置

; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)

; 用法:SetCursor Cursor_Row,Cursor_Col

SetCursor Macro Cursor_Row,Cursor_Col

PUSH BX

PUSH AX

MOV DH,Cursor_Row

MOV DL,Cursor_Col

XOR BX,BX

MOV AH,2

INT 10H

POP AX

POP BX

EndM

Accept_Num DB 'Please input a number(0-9),Press Esc to Exit:$'

DigitalChr DB 'The ASCII of '

DigASCII DB 0,' is ',2 DUP(' '),'H$' ; 数字的ASCII数字

ASCII_Tab DB '0123456789'

Exit_Mark DB 0

; Subroutine

GLOBAL Get_Num:NEAR ;从键盘接受一个数字

Get_Num Proc Near

MOV AH,9

INT 21H

@@InputChr:

MOV AH,1

INT 21H

CMP AL,27 ;Esc

JZ @@Set_Exit

CMP AL,'0'

JB @@InputChr

CMP AL,'9'

JG @@InputChr

RET

@@Set_Exit:

INC Exit_Mark ;置退出标志

Ret

Get_Num EndP

Begin: MOV AX,3

INT 10H ;设置视频显示方式为80x25 16色文本方式

AcceptNum:LEA DX,Accept_Num ;提示输入一个1位数字符串地址

Call Get_Num ;从键盘接受一个数字

CMP Exit_Mark,1

JZ Exit_Proc ;若退出标志置位,则结束程序

MOV DigASCII,AL ;保存这个1位数

AND AL,0FH

LEA BX,ASCII_Tab

XLAT

CBW

MOV CX,4

SHL AX,CL

SHR AL,CL

OR AX,3030h

XCHG AH,AL

MOV WORD PTR DigASCII[5],AX

GetCursor

INC DH ;行号增1

INC DH ;行号增1

SetCursor DH,0

LEA DX,DigitalChr ;显示这个数的ASCII码

MOV AH,9

INT 21H

GetCursor

INC DH ;行号增1

INC DH ;行号增1

SetCursor DH,0

JMP AcceptNum

Exit_Proc:MOV AX,4C00H ;结束程序

INT 21H

Digi_ASC ENDS

END Start

补充回答:第二题,请另行提问。

问题出在这里

THREE: MOV MIN,CL

XLAT

AND AL,0FH

MOV AL,MIN

MOV DL,AL

MOV AH,02H

INT 21H

在你调用XLAT的时候,你需要把你要查表的东西放到AL里面,所以你可以改成这样

THREE: MOV MIN,CL

MOV AL,CL

XLAT

MOV DL,AL

MOV AH,02H

INT 21H

以上就是关于用汇编语言编写程序,建立一数据表,表中存放1-9的平方,查表求某数字的平方。全部的内容,包括:用汇编语言编写程序,建立一数据表,表中存放1-9的平方,查表求某数字的平方。、汇编语言程度题:从键盘上输入字符0~9,要求从屏幕上输出其ASCII值(使用查表程序)、一个汇编语言程序的问题,高分悬赏等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9836966.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存