文档介绍:专忒;莎建堆申按i巒
实验报告
微机原理
课程名称:
实验名称:
将十六进制转换并显示
管理学院
院(系):
专业班级:
信管1101班
王力
姓 名:
学 号:
10宽
DAT SEGMENPTARA'DATAS'
A1 DB12H,34H,56H,78H,9AH
DB0BH,0DEH,0F0H B1=$-A1
; 段定义指令,段名 DAT ,并定义边界 ;字节数据存放在A1开头的内存中
B2=B1*2
A2 DBB2 DUP( ?)
DAT ENDS
;赋值伪指令,求A1 (符号地址)到当前汇编
; 指针地址( $)的字节数
; 求二倍的 B1
;开辟B2个字节的内存空间,并以A2开头
; 段结束
STACKSSEGMENPTARA STACK'STA' ;段定义指令,段名 STA ,并说明本段为堆栈
STA1 DW100 DUP( ?) STACKSENDS
;开辟以STA开头的100个字节的内存空间 ; 段结束
CODESEGMENPTARA 'CODE'
ASSUMCES:CODE,DS:DAT 址在DS
ASSUMSS:STACKS,ES:DAT ;段寄存器说明指令,STAC勺段基址在CS, DAT勺段 基址在 ES
STAR PROC FAR 调用
PUSHDS
XORAX,AX
PUSHAX MOVAX,DAT MOVDS,AX MOVES,AX
LEASI,A1
LEADI,A2
MOVCX,B1 G1:MOVBL,2
; 段定义指令,段名 COD,E 并定义段边界
;段寄存器说明指令,COD的段基址在CS, DAT勺段基
;过程定义指令,FAF说明该段可被其他非本段指令
;将DS$入栈保存
;异或运算将AX寄存器清为0
;将AX压入栈中保存
;将DAT段的前俩个内存的内容放入AX寄存器
;将AX中的内容给DS
;将AX中的内容给ES
;将A1的地址放入SI
;将A2中的地址放入DI
;将B1中的内容放入CX寄存器
;将2放入BL寄存器
MOVAL,[SI]
MOVBH,AL
PUSHCX
MOVCL,4
ROR AL,CL POPCX
G2:ANDAL,0FH DAA ADDAL,0F0H ADCAL,40H MOV[DI],AL INC DI MOVAL,BH DECBL JNZ G2 INC SI LOOP G1 MOVSI, OFFSETA2 MOVCX,B2 CALL P1 RET
STAR ENDP
P1
G:
T:
PROC
MOVBL,2
MOVDL,[SI]
MOVAH,2
INT 21H
INC SI
DECBL
JNZ T MOVDL,' ' MOVAH,2 INT 21H
MOVBL,2
LOOP G
RET
ENDP
P1
CODEENDS
; 将寄存器 SI 中的内容所指的内存中的内容给 AL
;将AL中的内容放入BH
;将CX压人堆栈保存
;将4放入CL中,为循环次数
;将AL中的比特位循环右移CL次
;将栈顶元素返回存入C沖
;与运算,保留AL的低四位
;对AL俩位十进制(BCD调整