用IBM-PC汇编语言实现1到100求和并将结果以十六进制形式输出。
.MODEL SMALL
.DATA
SUM DB ?
MSG DB "The sum in hex is: $"
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX ;设置数据段
MOV AH,00 ;清空寄存器
MOV AL,00
MOV CX,64 ;设置循环次数,这里是100/2=50
MOV BL,01 ;初始化计数器
LOOP_START:
ADD AL,BL ;将计数器加到总和中
INC BL ;计数器加1
LOOP LOOP_START ;循环
MOV SUM,AL ;将结果存入SUM变量
MOV AH,09 ;输出提示字符串
MOV DX,OFFSET MSG ;将DX设置为字符串地址
INT 21H ;调用dos中断
MOV AH,02 ;输出16进制数
MOV DL,SUM ;将SUM寄存器中的结果移动到DL
MOV CX,04 ;重复4次
HEX_LOOP:
PUSH CX ;将CX入栈
MOV CH,DL ;将高位字节移动到CH中
SHR CH,04 ;将高位字节右移4位
CMP CH,10 ;如果大于10,表示需要加A-10
JAE HEX_A_TO_F
ADD CH,30H ;否则转换成数字
JMP HEX_DONE
HEX_A_TO_F:
ADD CH,37H ;转换成A-F字母
HEX_DONE:
MOV DL,DL ;将DL移回DL,右移4位后的初始值
SHL DL,4 ;将DL左移四位,准备处理低位字节
MOV CL,DL ;将低位字节移动到CL中
SHL CL,4 ;将CL左移四位
SHL DL,1 ;将低位字节左移一位,成为高位字节
ADD DL,CL ;将低位字节和高位字节加到一起
POP CX ;将CX弹出栈
LOOP HEX_LOOP ;循环
MOV AH,4CH ;退出程序
INT 21H
MAIN ENDP
END MAIN
“与”运算
又称逻辑乘,可用符号·
或^
来表示。
如有A、B两个逻辑变量(取值为“0”或“1”),可能有4种取值情况:
应用:
“或”运算
又称逻辑加,可以用符号+
或V
来表示。
应用:对特定位强行置1。
“非”运算
“非”运算的结果相当于取反。
“异或”运算
应用: